LoginSignup
5
4

More than 5 years have passed since last update.

あのボタンからSeleniumでAPIの無いサイトを操作する

Last updated at Posted at 2018-11-24

はじめに

あのボタンを買ったのはよいけど、肝心のいつも使ってるあのサイトがAPIを提供していない!
昨今はだいぶAPIは公開されていますが、まだまだ非公開/非対応というのはよくある話でそんなサイトへのアプローチです。

構成

image.png
上記の通り、最終的にはLambdaからSeleniumを経由することでブラウザでの操作を再現します。
ブラウザ操作なのでほぼすべてのサイトに対応できます。

Lambdaの作成

実際に行いたい操作だけを手元にご用意ください。

操作記述例
driver.find_element_by_xpath("//input[@type=\"submit\"").click()

この際注意点として、絶対にIDやパスワードなどの固有情報を含めないでください。(構成をそのまま再現するとGithubなので悪用される恐れがあります。)
※クレデンシャル情報の類いをよりセキュアにするためにはAWS Secrets Managerの利用も検討の余地有り。この記事では非複数管理&個人ユースのため使用しません

必要な場合は以下例のように【キー】を必要な分だけ用意することで外部から注入できます。

設定値取得先
def lambda_handler(event, context):
    event['placementInfo']['attributes']['【キー】']

ビルド

実行用に依存解消したものを作るフローは以下を参考にしてください。
Chrome headlessをLambdaで動かす際の依存解消にCodebuildを使う

設定値の注入

以下の記事を参考に設定
https://blog.soracom.jp/blog/2018/11/07/tips-of-soracom-lte-m-button/

終わりに

私は勤怠サービスへ操作をさせてます。回線依存なしにどこでも使えて最高です。
対向は何でもいいので、ほかにも応用先を検討中

以下は実行レポート※1なのはたぶん押し忘れ
Screenshot_20181124-225839.jpg

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4