Node.js를 사용하여 혼다와 싸움
혼다와 젠켄은
펩시 재팬이 갑자기 시작한 기획이다. 특정 트윗을 하면 혼다와 짱짱 수 있고, 이기면 펩시 콜라를 받을 것 같다.
/앞으로 3일! 4/19까지 #매일도전 #매일11시 #혼다 \ @pepsi_jpn 교환 쿠폰이 있습니다! 당신은 무엇을 꺼내? ※ 혼잡하면 회신이 느려집니다 #혼다 - Pepsi (펩시) (@pepsi_jpn)
혼다의 승률
혼다 케이유의 켄켄 승률은 대략 98%를 넘고 있으며, 펩시 재팬의 트윗 수 약 807000중 80만건이 펩시의 당락립이라고 가정하면, 1개 600ml의 펩시(100ml당 47kcal)를 혼다 케이유 는 784,000개 이상 마시고 있으며, 그 칼로리는 2억 2천만 kcal에 달한다. 이것은 90분의 축구 약 22만 시합분에 상당. - 스타바 조시 (@yaba_resi) #펩시
뭐야?
혼다와 젠켄하는 법
당초는 펩시 공식 트윗에 있는 버튼을 눌러야 한다고 생각했지만, 아무래도 펩시 재팬에의 리플라이로 해시 태그가 들어 있으면 반응하는 것 같다.
그렇기 때문에 결론으로서는 이하의 트윗을 투고하면 혼다와 젠켄 할 수 있게 된다.
@pepsi_jpn #本田とじゃんけん #本田に〇〇で勝つ
Node.js에서 혼다와 싸우는 방법?
Twitter API도 좋지만 API 키가 없으면 사용할 수 없기 때문에 이번에는 puppeteer를 사용하여 혼다와 싸움을 해 나가고 싶습니다.
puppeteer는 헤드리스 브라우저에서 Chrome을 즐길 수있는 대단한 사람입니다.
구그하면 여러가지 정보가 나오므로, 자세한 정보는 다른 분의 기사에서 봐 주세요.
소스 코드
리포지토리
#재팬콜라
const puppeteer = require('puppeteer');
require('dotenv').config();
async function main() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
try {
await login(page);
await tweetPepsi(page)
} catch (error) {
console.log(error);
} finally {
browser.close();
}
}
async function login(page) {
const URL = 'https://twitter.com/login';
await page.goto(URL, {waitUntil: "domcontentloaded"});
// ログイン情報入力、ログインボタン押下
await page.evaluate((id, password) => {
document.querySelector('.js-username-field').value = id;
document.querySelector('.js-password-field').value = password;
document.querySelector('.js-signin').submit();
}, process.env.ACCOUNT_ID, process.env.ACCOUNT_PASSWORD);
await page.waitForNavigation();
console.log('✨ ログイン成功');
}
async function tweetPepsi(page) {
const tweetText = '@pepsi_jpn #本田とじゃんけん #本田にパーで勝つ';
// ツイートモーダル開く
await page.evaluate(({}) => {
document.querySelector('#global-new-tweet-button').click();
},{});
await page.waitFor(500);
// ツイート文入力
await page.evaluate((tweetText) => {
document.querySelector('#Tweetstorm-tweet-box-0 > div.tweet-box-content > div.tweet-content > div.RichEditor.RichEditor--emojiPicker.is-fakeFocus > div.RichEditor-container.u-borderRadiusInherit > div.RichEditor-scrollContainer.u-borderRadiusInherit > div.tweet-box.rich-editor.is-showPlaceholder > div').textContent = tweetText;
}, tweetText);
// ツイート
await page.evaluate(({}) => {
document.querySelector('.SendTweetsButton').click();
},{});
console.log('🐤 ツイート完了');
}
main();
사용 라이브러리
처리 해설
처리로서는
- 헤드리스 브라우저를 세우기
- 트위터 로그인 페이지로 전환
- querySelector로 로그인 정보 입력
- querySelector에서 클릭 이벤트 발생 로그인
- 트윗 모달 열기
- 트윗 문장 넣기
- 트윗 버튼 누르기
이것뿐입니다.
미래의 도전
또한
혼다와 젠켄의 기간은 4/19까지 같아요.
지금부터 정기 실행 트리거를 만들어도 이틀 밖에 시도 할 수없는 것 같아서 유감입니다 (울음)
라고 할까 이길 생각이 없기 때문에, 돈키로 코카·콜라를 사고 싶습니다.
고마워요
Reference
이 문제에 관하여(Node.js를 사용하여 혼다와 싸움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ancient_Scapes/items/7ac3d412b305f33c4eb7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)