自分のブログを他の人に広めるためにツイートしたりします。そのツイートしたときに表示された画像が間違えていた場合は、Card Validatorというサイトで更新しないといつまでも残る形になっています。
私が知っている範囲では1ページ単位しか更新できない・・・・ めっちゃめんどくさいのpuppeteerで自動化をした
puppeteerを知らない人はこちら
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(); })();
ログイン時にメールが飛んでくるのはご愛嬌で・・・・