MileMoa
Search
×

아멕스 오퍼 한번에 쓸어담기 (자바스크립)

2n2y, 2019.10.10 00:34:18

조회 수
8794
추천 수
0

1. https://global.americanexpress.com/offers/eligible 로 이동

2. F12 눌러서 Console 열기

3. 붙여넣기

var offers=document.querySelectorAll("button.offer-cta");for(i=0;i<offers.length;++i)offers[i].click();

 

====

 

2021년 업데이트: 위 스크립 쓰니까 먹통이 되네요. 아직 쓰시는 분은 0.1초 딜레이 넣은 아래 스크립으로 쓰세요. (21년 10월 8일 작동 확인)

offers = document.querySelectorAll("button.offer-cta"); for (let i = 0; i < offers.length; i++) { setTimeout(function() { console.log(i + "/" + offers.length); offers[i].click(); }, i * 100); }

 

자잘팁: 북마클릿으로 만들어쓰시면 원클릭으로 편합니다.

북마클릿 만들기: 아래 한줄을 마우스로 긁어서 북마크바에 드랍하시고 아멕스 오퍼 페이지에서 새로 만든 북마크를 클릭하시면 됩니다

 

javascript:var offers = document.querySelectorAll("button.offer-cta"); for (let i = 0; i < offers.length; i++) { setTimeout(function() { console.log(i + "/" + offers.length); offers[i].click(); }, i * 100); }

 

====

 

2023년 업데이트. 필요해서 발로 급하게 하나 짰습니다. 필요하시면 쓰세용. 탭 넣었기 때문에 엑셀에 붙여넣기하면 알아서 나눠서 넣어줍니당

 

실행화면 (가운데 00000은 무시하세용)

 

amex-offer-2023.png

 

 

let cardSelected = document.querySelector('[data-module-name="axp-account-switcher"]').firstChild;
let cardSelectedDescription = cardSelected.firstChild['alt'].replace('American Express', '').replace('Card', '').trim();
let cardSelectedNumber = cardSelected.innerText.trim();
let offers = document.querySelectorAll("button.offer-cta");
 
let j = 0;
let nonOffer = 0;
let offer = 0;
for (let i = 0; i < offers.length; i++) {
  if (offers[i].textContent.includes("Add to Card")) {
    j++;
    setTimeout(function () {
      offer++;
      let root = offers[i].parentElement.parentElement.parentElement.firstElementChild;
      let detail = root.nextElementSibling.firstElementChild;
      let store = detail.nextElementSibling;
      let expireDate = root.nextElementSibling.nextElementSibling.firstElementChild.nextElementSibling;
      console.log(offer + '\t ' + cardSelectedDescription + cardSelectedNumber + '\t' + expireDate.textContent + '\t' +  store.textContent + ' -- ' + detail.textContent);
      offers[i].click();
    }, j * 2023);
  } else {
    nonOffer++;
    console.log(nonOffer + "/" + offers.length + " - skip");
  }
}
 
console.log("Adding Total: " + (offers.length - nonOffer));
첨부 (1) 펼치기 ▼

40 댓글

얼마에

2019.10.10 00:39:43

9820E1F9-0175-4449-9814-E2B891C21E39.jpeg

 

대박마

2019.10.10 00:46:26

올.... 탱큐 베리 머치...

큼큼

2019.10.10 08:31:49

감사합니다. 그런데 이거 아멕스에서 추적해서 나중에 불이익 주거나 하는건 아니겠죠잉.. AYOR 로 하셔야겠습니당

2n2y

2019.10.10 08:55:58

조심스럽게 하실려면 반복할때마다 1-2초 랜덤 딜레이 넣어도 되겠네요. 

2n2y

2019.10.11 09:55:18

delay 추가용

var offers = document.querySelectorAll("button.offer-cta");

for (let i = 0; i < offers.length; i++) {

    var delay = (Math.floor(Math.random() * 30)) + 1;

    setTimeout(function() {

        // console.log(i + "/" + offers.length);

        offers[i].click();

    }, delay * 100);

}

큼큼

2019.10.11 10:03:41

오.... 능력자 이십니다... 공유 감사합니다.

데이비드간디

2019.10.29 18:03:13

요대로 루프 돌리면 순차적으로 오퍼 사이사이에 랜덤 딜레이가 들어가는 게 아니고,

모든 버튼 클릭이 동시에 랜덤 딜레이 카운트다운에 들어갑니다.

각 버튼에 매겨진 랜덤 딜레이들이 별 차이가 없으면 거의 동시에 들어갈 수도 있습니다.

오퍼 클릭 사이사이에 딜레이를 넣고 싶다면 setTimeout 콜할 때

i * 1000 (1초 간격 클릭) 혹은 i * (원하는 딜레이값) 쓰면 원하시는 결과가 나옵니다.

shilph

2019.10.10 09:28:15

자바 스크립트로 아멕스 오퍼에서 버튼들을 일괄적으로 눌러주는건가요?

2n2y

2019.10.10 10:38:03

Wave

2019.10.10 10:04:44

원글이 정획히 무엇을 하는건지 약간의 부연 설명을 추가해주셨으면 좋을것 같습니다. 그냥 내 웹브라우저에 보여주기만 하는건지 아니면 실제로 아멕스 싸이트에 어떤 액션을 취하는건지 알지 못하니 겁나서 실행을 못하겠네요.

2n2y

2019.10.10 10:40:50

실제로 아멕스 오퍼를 한번에 등록하는 자바스크립입니다. 

Wave

2019.10.10 18:01:16

설명 감사합니다.

무지렁이

2019.10.10 11:26:06

animate_emoticon%20(11).gif

능력자!!

poooh

2019.10.10 12:10:33

아멕스 오퍼를 받기위해서는 오퍼마다 클릭을 해주셔야 하는데,

이 자비 스크립은 그 오퍼 클릭을 일일히 할 필요 없이 한번에 다 해주는거에요. 

엉거주춤

2019.10.10 15:53:24

저처럼 잘 모르는 분들을 위해.... 잠시 찾아 봤더니 어렵지 않네요.

북마크 만들기 하시고 (1) 북마크 이름 입력하시고 (2) url 부분에 아래 스크립트 복사해서 붙이시면 됩니다.

javascript: var offers=document.querySelectorAll("button.offer-cta");for(i=0;i<offers.length;++i)offers[i].click();

 

그리고 아멕스 오퍼창에서 만들어둔 북마크를 한 번 클릭해 주시면 됩니다.

데이비드간디

2019.10.15 00:31:59

좀 더 변형시켜서 전부 다 애드하고 싶진 않고 특정 키워드 포함한 오퍼만 애드하고 싶으시다면...

 

const offers = document.querySelectorAll('button.offer-cta');

for (let i = 0; i < offers.length; i += 1) {

  const rowText = offers[i].parentNode.parentNode.parentNode.innerText;

  if (['SOME_KEYWORD_1', 'SOME_KEYWORD_2'].some((keyword) => rowText.toLowerCase().includes(keyword.toLowerCase()))) {

    offers[i].click();

  }

}

 

저 위에서 SOME_KEYWORD_1 부분을 원하는 텍스트로 바꾸면 전체 오퍼 중에 키워드 리스트 중 하나를 포함한 오퍼만 클릭할 수도 있습니다.

키워드 추가하고 싶으면 키워드를 "" 안에 넣고 , 로 나눠주시면 됩니다. ex: "mgm resorts", "supermarkets", "lacoste"

EDIT: 키워드를 소문자로 쓸 경우에만 작동이 되는 버그가 있어서 키워드도 케이스 무시하게 살짝 수정했습니다.

grayzone

2019.11.01 09:51:29

감사합니다! 그런데 크롬 콘솔로 돌려 보니

Uncaught SyntaxError: Invalid or unexpected token

요런 에러가 뜹니다 ㅠㅠ

나보다잘생긴

2019.11.01 10:40:51

코드 올려주실 수 있으세요? 키워드 바꿔쓰는 과정에서 신택스 에러가 생긴 것 같아 보이네요.

저 코드상에서 SOME_KEYWORD_1, SOME_KEYWORD_2 딱 요 부분만 바꿔야 합니다.

" "는 그대로 둬야 하고요. 그리고 키워드 추가하시려면 , 로 나눠서 추가하시면 됩니다. ["abc", "def", "ghi"] 이런 식으로.

지금 돌려봤는데 잘 작동합니다.

grayzone

2019.11.01 10:52:46

네. 스트링 감싸는 quotation mark는 그대로 두었어요. 이렇게 수정한 상태예요.

let offers = document.querySelectorAll("button.offer-cta");
for (let i=0; i < offers.length; i++) {
  let rowText = offers[i].parentNode.parentNode.parentNode.innerText;
  if ([“Membership Rewards”, “Hotel”].some(keyword => rowText.toLowerCase().includes(keyword))) {
    offers[i].click();
  }
}

나보다잘생긴

2019.11.01 21:39:35

문제는 없어보이네요. 혹시 맥 사용하시면 따옴표가 스마트 펑츄에이션으로 인해서 특수 문자 따옴표로 바뀌진 않았는지 확인해보세요. 따옴표가 수직선이 아니라 기울어져 있으면 그게 문제입니다. ㅎㅎ 회사에서 일 하다가 몇 번 겪어봐서 스마트 펑츄에이션 꺼버렸어요. 

 

그리고 위에 코드 한군데 수정했는데 그 부분도 바꾸셔요~ 마지막 keyword 를 keyword.toLowerCase() 로 바꾸시면 됩니다. 

 

아 또 하나, 한 창에서 여러번 돌리시려면 페이지 리프레쉬 하시거나 맨 윗줄 하나 지우고 하셔요~

grayzone

2019.11.02 21:23:12

아.. 맥이 또...;; 말씀하신 이유였어요.

감사합니다!

나보다잘생긴

2019.11.02 21:46:10

복붙 하다가 많이들 당해요 ㅎㅎㅎㅎ

까만둥이

2019.10.15 07:46:28

한가지 질문인데요. 오퍼 한 카드에 등록시키면 다른 카드에 중복이 안되지 않나요? 보통 카드들 여러가지이고 오퍼도 중복으로 들어올텐데 그런 경우에는 어떻게 적용이 되는건지 궁금하네요 ^^

나보다잘생긴

2019.10.29 18:45:09

이 스크립트 돌리면 한 번에 한 카드씩만 들어온 오퍼 싸그리 등록해요. 페이지 상에 보이는 오퍼만요.

요즘은 아멕스 오퍼 추가하면 다른 카드 선택해서 아멕스 오퍼 리스트 리프레쉬 되면 이미 다른 카드에 등록된 오퍼는 안 보여요.

그리고 혹시나 중복된 오퍼가 보이게 되더라도 마우스로 직접 중복된 오퍼 클릭하면 그냥 에러 메세지 뜨고 말듯이 똑같은 결과 나옵니다.

 

이 코드가 하는 건 그냥 Add to Card 버튼을 마우스로 누르는 대신 코딩으로 눌러줄 뿐입니다.

까만둥이

2019.10.30 01:58:15

가르침 감사드립니다. ^^

주매상20만불

2019.11.01 21:42:22

어떻게 하는거에요? f12 누른다음에

 

console 누른다음에 어디에다가 붙이는거죠? ㅠ.ㅠ

나보다잘생긴

2019.11.02 21:47:08

지금 모바일이라 스샥을 못 찍는데 콘솔창에 보면 마지막 줄에

> 표시 나오고 타이핑 할 수 있는 부분이 있어요. 거기에 코드 붙여놓고 엔터 치면 됩니다!

크리스박

2019.11.03 17:05:26

이렇게 console에서 넣으신 다음에 "Enter"하시면 됩니다.

AMEXOFFER.jpg

 

나보다잘생긴

2019.11.03 20:04:28

참고로 같은 창에서 두 번 돌리면 첫 줄 에러나니까 두 번째 돌릴 때는 맨 앞에 var 지우고 하세요 ㅎㅎ

6월의아카시아향기

2019.11.04 03:31:42

오퍼 등록이 최대 100개까지 네요. 전 기존 50개 등록하고 있었고, 새로운 오퍼가 100개라서 이 코드를 돌렸더니 등록이 총 150개가 아니라 100개 밖에 안보이네요. 이점 염두에 두시고 돌리시는게 좋을 듯 하네요. 

BigApple

2019.12.02 17:55:06

저는 이 코드를 넣고 엔터를 쳤는데 아무런 변화가 없습니다. 왜 그럴까요? console 창을 닫았더니 이번에는 무한 페이지 리로드에 들어가네요. 

뭔가 문제일까요? 

나보다잘생긴

2019.12.02 18:24:38

이상이 있으면 콘솔에 에러가 뜰텐데 그런 정보 없이는 왜 그러는 지 알 수가 없습니다. 어떤 코드를 어느 페이지에서 돌리셨는지도 알려주시면 도움이 돠겠네요. 

BigApple

2019.12.03 17:02:03

그냥 화면이 먹통이 되서 꺼버렸습니다 ㅠ.ㅠ 제 컴이 문제인걸수도 있겠습니다. 

나보다잘생긴

2019.12.03 17:20:57

혹시 옛날 버전의 아멕스 웹사이트 링크를 쓴다든가 그러시진 않죠? 코드 돌린 페이지 링크 보내주시면 한 번 보겠습니다. 

2n2y

2021.10.09 00:20:38

우연히 다른 글을 보고 이 글 생각났다가 이 때 재미로 5/24 계산기도 하나 만들었는데 심심풀이로 하고 싶은 분들은 해보세요

크레딧카르마에서 로그인 하시고 아래 페이지에서 

https://www.creditkarma.com/myfinances/creditreport/#accounts 

 

아래 스크립을 실행하시면 됩니다

document.querySelector('div.dateopened').click();

document.querySelector('div.dateopened').click();

var count = 0;

var accounts = document.querySelectorAll("div.account-item");

for (let i = 0; i < accounts.length; i++) {

    if (accounts[i].querySelector('.accounttype .colText').innerText.trim() != 'Credit Card') continue;

    count++;

    var dateStringValue = accounts[i].querySelector('.dateopened .colText').innerText.trim();

    var dateOpened = new Date(Date.parse(dateStringValue));

    console.log(dateOpened.toISOString().slice(0, 10));

    var oesaExpiresDate = new Date(dateOpened.getFullYear() + 2, dateOpened.getMonth(), dateOpened.getDate());

    if (count == 4) {

        alert('game over! please dongle until ' + oesaExpiresDate.toISOString().slice(0, 10));

 

        const diffTime = Math.abs(oesaExpiresDate - new Date());

        const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

        alert('only ' + diffDays + ' days left!');

    }

    var oesaExpired = oesaExpiresDate < new Date();

    if (oesaExpired) {

        alert('you are ' + count + '/24');

        break;

    }

}

 

애둘아빠

2021.10.09 00:26:17

오~~~!!!! 감사합니다!!! 대박!

2n2y

2021.10.09 00:31:57

2년전에 만들어놓은게 아직도 돌아가니 신기하네요. 이 때 만들다가 말은거 같은데... 얘네들은 일 안하나... ㅡ.ㅡ

다시 보니 이 페이지에 자료가 정말 많네요.

누구든지 신용 리포트 분석 하는 스크립 필요하시면 말씀해주세용. 왠만한건 다 가능할듯 싶어요

리디파파

2021.10.09 01:13:23

오.. game over! please dongle until 2021-11-18

한달남았네요. 몰랐는데.. ㅎㅎ 감사합니다!

데이비드간디

2021.10.12 09:28:16

몇 번을 망설이다가 적습니다 ㅠㅠ

호옥시나 직접 카운트 안 하시고 요걸로 계산하시다가 착오가 생기는 분이 생길까봐요...

제가 보기에는 코드 결과가 사실과 다르게 나올 걸로 예상됩니다.

(직접 돌려서 테스트 해보진 않았습니다.)

 

1. 실제로는 n/24인데 n+1/24로 알림

2a. 4 or more/24일 경우에는 4장째에서 이미 게임오버

2b. 그리고 3/24가 되는 날짜까지 동굴 가있으라고 알림

 

#2에 대해서는 5/24 도달 자체를 막기 위해서 일부러 그런 것이라면 수긍이 갑니다만,

사용하실 분들 위해서 알려는 드려야할 것 같아서 언급했습니다.

NCS

2022.05.26 01:50:41

일전에 이 글을 봤던 것이 기억나서 오늘 처음으로 돌려봤는데, 한 20개 정도 들어간 이후에 시스템에서 막는 듯 하는 합니다.

Failed to load resource: net::ERR_BLOCKED_BY_CLIENT

아멕스 공홈에서도 sorry 하면서 offer 설명을 펼치는 것이 블락 되는듯 해보였습니다.

목록

Page 1 / 4211
Status 번호 제목 글쓴이 날짜 조회 수
  공지

마적단의 기초 | 검색 먼저하기 + 질문 제목을 자세하게 내용도 구체적으로 작성하기

| 정보 34
  • file
ReitnorF 2023.07.16 491885
  공지

게시판의 암묵적인 규칙들 (신규 회원 필독 요망)

| 필독 213
bn 2022.10.30 700363
  공지

** 모든 글 (본문/댓글)에 리퍼럴 링크 언급/추가는 운영자 사전동의 필수 **

| 운영자공지 20
마일모아 2021.02.14 566039
  공지

게시판 필독 및 각종 카드/호텔/항공/은퇴/기타 정보 모음 (Updated on 2024-01-01)

| 정보 181
ReitnorF 2020.06.25 858187
updated 126330

매리어트 호텔관련 포인드 관련 질문

| 질문-호텔 8
호뚱이 2026.04.16 703
new 126329

Tax Return에서 세금을 실수로 추가 납부하면 환급은 어떻게 되나요?

| 질문-기타 2
아날로그 2026.04.17 311
updated 126328

룰루레몬 (Lululemon) 현장 기카 구매 크레딧 dp (YMMV)

| 정보-카드 116
  • file
슈슈 2025.09.24 29484
updated 126327

아맥스 북방한계선 모음집 (추가되는대로 계속 업뎃 예정 - 브릴20만 새링크-사망/붸비 17.5만/비플 30만 타겟)

| 정보-카드 304
가고일 2025.06.16 68440
new 126326

[4/17/26] 발느린 늬우스

| 정보 8
shilph 2026.04.17 288
new 126325

AA로 ICN--> MCO (DFW 경유) KE/AA 적립이 궁금합니다

| 질문-항공 3
  • file
남천동서장 2026.04.17 200
new 126324

몇년전 은행 cd에 넣어 놓았던 돈이 행방 불명입니다. 무엇을 해야 할까요?

| 질문 18
빌리어너 2026.04.16 2320
updated 126323

ANA First 승객에게만 350불에 판매하는 Hibiki 구매 하시겠습니까?

| 질문-항공 60
971turbo 2024.09.23 17726
updated 126322

이제 유할이 문제가 아닌 것 같아요. 항공편들 대거 캔슬이 걱정이네요.

| 정보-항공 72
마일모아 2026.04.02 26871
updated 126321

광기(?)로 완성한 홈 대시보드..그런데 AI의 도움을 곁들인

| 정보-DIY 33
  • file
소바 2026.04.16 2540
updated 126320

저널리즘 (그림그리는) 시니어 입시후기

| 자랑 79
  • file
땅부자 2026.04.13 7852
updated 126319

렌트집 스마트홈 설정 관련 조언 부탁드립니다.

| 질문-기타 18
happysunny 2026.04.13 9015
updated 126318

Fidelity, Schwab 계좌 기능 비교

| 정보-은퇴 14
duk72 2026.04.12 9236
updated 126317

[2026] Hyatt Globalist tier offer 가 돌아왔네요: 90일 이내에 20박 투숙 조건

| 정보-호텔 346
프리 2025.01.13 71240
updated 126316

[여행은 아콴텀] 먹방으로 가득 채운 여름 한국 여행 후기 (feat. 모수)

| 후기 98
  • file
AQuaNtum 2025.09.04 11224
new 126315

신라호텔 간단 후기 (사진 없음) -f&b 10만원권 (fhr과 별개)

| 후기 3
dvsn 2026.04.16 721
new 126314

FHR 신라호텔 예약변경이 안되는 것으로 나옵니다.

| 질문-호텔 2
  • file
우수리스크 2026.04.17 385
updated 126313

The Ritz-Carlton™ Credit Card vs Marriott Bonvoy Bevy® American Express® Card

| 질문-카드 6
디지츠 2026.04.16 1100
updated 126312

오사카 Waldorf Astoria 12만 vs Conrad 9만5천 포인트

| 질문-호텔 17
hessed 2026.03.11 2609
new 126311

한국 귀국 준비 도움 부탁드립니다 | 아직 몇년의 시간이 조금 남아 있어서 지금부터 조금씩 은행과 신용카드 신분 정리를 하려고 합니다.

| 질문-기타 4
gungoguma12 2026.04.17 741
updated 126310

사용해 보고 추천하는 Airalo 데이터 전용 전세계 esim

| 정보-여행 380
블루트레인 2023.07.15 80687
updated 126309

(마적단의 추억이야기) AI도 자율주행도 없었지만 행복했던, 그때 그 시절 '왕복' 대륙횡단의 기억

| 후기 20
  • file
kaidou 2026.04.16 1210
updated 126308

8개월간 달렸던 뱅보 후기

| 후기 70
Necro 2024.06.05 15309
updated 126307

아멕스 베비 바운드리스 패스하고 바로 브릴리언트 만들기?

| 질문-카드 11
irene 2026.02.26 3171
updated 126306

해외 여행중 티모빌 International Pass 사용

| 정보-기타 15
  • file
단대부고 2025.09.23 7452
updated 126305

맨해튼 타임스퀘어에 있는 매리어트 citizenM 호텔을 제가 예약하고 타인이 숙박하는게 가능한가요?

| 질문-호텔 3
unigog 2026.04.16 808
updated 126304

경주 힐튼 호텔 관련 질문입니다- Advance Purchase 이외에 힐튼 아너 세일 옵션이 있네요.

| 질문-호텔 9
  • file
미니멀라이프 2026.04.16 1014
updated 126303

엉불 nll 리젝... maximum number and type of amex card...?

| 질문-카드 64
AQuaNtum 2026.02.28 7307
updated 126302

추가 (할머니 답장 - 답장 고민중) / (긴 드라마틱 속풀이 주의) 여행 다녀오니 앞마당에 울타리 포스트들이 설치되어 있었다!

| 잡담 36
마누아 2026.04.14 8788
updated 126301

라쿠텐에 Bill (벤더 페이 플랫폼): 45달러 내고 125달러 리베이트 받았습니다

| 정보-기타 51
  • file
지지복숭아 2026.02.19 14546