自分のブログを他の人に広めるためにツイートしたりします。そのツイートしたときに表示された画像が間違えていた場合は、Card Validatorというサイトで更新しないといつまでも残る形になっています。
twitter カードの更新イメージ
私が知っている範囲では1ページ単位しか更新できない・・・・
めっちゃめんどくさいのpuppeteerで自動化をした
puppeteerを知らない人はこちら
masalib.hatenablog.com
masalib.hatenablog.com
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch({
headless: false,
ignoreHTTPSErrors : true ,
});
console.log("ツイッターキャッシュ更新");
var page = await browser.newPage();
await page.setViewport({width: 1280, height: 700});
await page.waitFor(500);
//想定外のダイアログを無視する
page.on('dialog', dialog => {
dialog.accept();
})
//初期設定
const twitterUser = 'masalib@gmail.com';
const twitterUserPass = 'password'
const clearInputFocus = '#ValidationForm > div > div:nth-child(1) > input.FormControl';
const clickFocus = '#ValidationForm > div > div.Grid-cell.u-sizeFill.u-marginTm > input';
const cleartargetpageURL = 'https://masalib.hatenablog.com/entry/';
console.log("Login start");
await page.goto('https://twitter.com/login?redirect_after_login=https%3A%2F%2Fcards-dev.twitter.com%2Fvalidator')
await page.type('#page-container > div > div.signin-wrapper > form > fieldset > div:nth-child(2) > input',twitterUser);
await page.waitFor(1000); //←1秒待たないと入力できなかった
await page.focus('#page-container > div > div.signin-wrapper > form > fieldset > div:nth-child(3) > input');
await page.type('#page-container > div > div.signin-wrapper > form > fieldset > div:nth-child(3) > input',twitterUserPass);
await page.waitFor(1000);
inputElement = await page.$('#page-container > div > div.signin-wrapper > form > div.clearfix > button');
await inputElement.click();
await page.waitFor(2000);
//console.log("Login end");
//console.log("cache clear start");
await page.focus(clearInputFocus);
await page.type(clearInputFocus,cleartargetpageURL + '2018/11/20/000000'); //この部分を動的にするのは別に・・・・
await page.waitFor(1000);
inputElement = await page.$(clickFocus);
//console.log("cache clear first ");
await inputElement.click();
await page.waitFor(3000);
inputElement = await page.$(clickFocus);
//console.log("cache clear second ");
await inputElement.click();
await page.waitFor(3000);
//エビデンスがとりたい人はここで画面キャプチャーをとる
//await page.screenshot({path: 'images/site_logined.png'});
browser.close();
})();
ログイン時にメールが飛んでくるのはご愛嬌で・・・・