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エラーも怖くないですね☆