puppeteer+Headless Chromeでログインする

無職なのでクローリング力を高めるためにヘッドレスChromeを触りたいと思います。今回はChromeチーム開発のpuppeteerを使って放送大学の学生ポータルページにログインしてみます。

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    // ログインページ
    await page.goto('https://sso.ouj.ac.jp/cas/login?service=https%3A%2F%2Fwww.wakaba.ouj.ac.jp%2Fportal%2Flogin%2Flogin%2FinitCasLogin');
    // 入力前スクショ
    await page.screenshot({
        path: 'login.png'
    });
    // 入力
    await page.type("#username", "ユーザー名");
    await page.type("#password", "パスワード");
    // 入力後スクショ
    await page.screenshot({
        path: 'login-input.png'
    });
    // submitをクリック
    const loginButton = await page.$('input[type=submit]');
    await loginButton.click();

    // 遷移まで適当に待つ
    await page.waitFor(5000);
    // ログイン後スクショ
    await page.screenshot({
        path: 'loggined.png'
    });
    // ブラウザを閉じる
    await browser.close();
})();

結果

入力前
入力後(意味ない…)
ログイン後

おー!ログインできてます。puppeteer+headless chromeの組み合わせは色々クロールが捗りそうです。

参考:puppeteerでCMSのログイン処理 – masalibの日記

 

種延真之

発達をしくじって窮乏生活してるおじさんです。最近の興味はアニメ, 心理学, 進化関係のトピック(進化生物学, 進化心理学, evo-devo), たまに思いついたようにプログラミング勉強したりします(最近はNode.js)。メモ類は→Scrapbox

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください