【Pythonスクレイピング入門】BOTアクセス対策サイトをrequests+UserAgent偽装で切り抜ける



事前準備

詳しくは下記記事参照

で、まぁこの記事で完了するはずだったんですが、想定外にもヤフーのトップに弾かれるという事態が起きました。

ヤフーからのレスポンスを見る限り、ヤフーのサーバーはアクセス元のブラウザを確認していて、特定の条件を満たさない場合、普段と違うページを表示しているワケです。

今回はこのタイプのサイトにrequestsから正常にアクセスして、普段人間が見ている画面と同じHTMLを返させる方法です。

原因はUA(ユーザーエージェント)

UAとは?

ユーザーエージェント (User agent)とは、利用者があるプロトコルに基づいてデータを利用する際に用いるソフトウェアまたはハードウェアのこと。
特にHypertext Transfer Protocolを用いてWorld Wide Webにアクセスする、ウェブブラウザなどのソフトウェアのこと。

ja.wikipedia.org

なげーよ。わかんねーよ。

一言で僕が言い換えて差し上げますと「基本的にブラウザ」のことです。

最後の一行だけで良い気もしますが、要するに「まぁ、みんながぱっと思い浮かぶのはブラウザだけど、それだけじゃないよね」ってことを書いてます。

サーバーはどうやってUAを見てるの?

HTTPというのはリクエストとレスポンスでできています。要求と返答です。

リクエストの時点でこちらの情報をある程度渡す必要があるんですね。

これをリクエストヘッダと言います。UA情報はリクエストヘッダに含まれています。

requestsではリクエストヘッダを書き換えて渡すことが可能です。

requestsのGETメソッドを投げるときにheadersと言うキーワード引数に渡します。一回上でheadersという変数に代入してますが、別にgetメソッドの中で直接渡してももちろん動きます。

ヤフーからのレスポンス

明らかに違いますね。今度こそ soup で抜き出してみましょう。

まとめ

できた!

次の記事