月曜日, 3月 22, 2021

seleniumで簡単にreferer偽装[python](403エラーやアクセス禁止された時に)

seleniumでアクセスしようとした時にどこからアクセスしたかで判別されて弾かれることがあります。

そんな時にrefererを偽装する方法を記しておきます。

意外と簡単な話でseleniumはjavascriptのコードを実行することができるため、javascriptを駆使します。
その前にまずはrefererとして設定したいサイトにアクセスします。

chrome_options = Options()
driver = webdriver.Chrome("/*chromeドライバーのパス*/", chrome_options=chrome_options)
driver.get("/*refererとして設定したいサイトのurl*/")

そしてseleniumにはjavascriptを実行するapiが存在します。

driver.execute_script(/*ここにjavascriptのコードを書く*/)

がjavascriptを実行するapiです。
ここのjavascriptに要素を書き換える命令を使って

なにかしらの要素をaタグに書き換えます。

そうです。自分が指定したurlにアクセスし、htmlの要素を書き換えてリンクを作成し、クリックしてそのサイトにアクセスすればrefererは自分で決めることができます。
そして下記のコードをサイトに合わせて書き換えて実行します。

var refererselector=document.getElementById("/*なにかしらのhtmlの要素のid*/");
refererselector.innerHTML="<a id='refererurllink' href=''+str(imgurl)+''>吹っ飛べ!</a>"

そしてseleniumのapiでクリックします。

element=driver.find_element_by_id("refererselector")
element.click()

これらを一つのpythonのプログラムにまとめると下記のようになります。

driver.execute_script('var refererselector=document.getElementById("/*なにかしらのhtmlの要素のid*/");refererselector.innerHTML="<a id='refererurllink' href=''+str(imgurl)+''>吹っ飛べ!</a>"')
element=driver.find_element_by_id("refererurllink")
element.click()

いかがだったでしょうか?
これで403エラーも怖くないですね☆

管理者用

Menu

色々あってメモ帳がわりのブログ的なものを作ることになりましたが、wordpressアレルギーなるものが発病したので代わりにflatpressという物を使って作ってみました。

プログラム関連のことを書いていこうと思っています。

ちなみに作った物やwebサイトはここに置いています。

flatpressの初期のテーマがどうしても気に入らなくて色々探しているうちに何が何だかわからなくなって、

ブログにふさわしいテーマってなんだ?

と自問自答しているうちに結局デフォルトのものに近い物を使ってしまった。
なんかいいテーマないですかね?

About

shimaumaと名乗っています。
なんとなく趣味でプログラムを書いてみたりしている人です。
phpから初めてpythonに手を出してその後にc#に手を出して、やめてpythonに戻ってきました。
ついったー
@shimauma4444