自作したホームページをSeleniumで検証していた時に、refererの違いによる動作チェックをしたかったのですが、Seleniumでrefererを書き換える方法が見つからなかったので、ちょっと実験してみました。
実験目的
自作したオフラインのホームページサイトhttp://hoge.hoge
をSeleniumでアクセスした際に、refererに任意のURL(今回はhttp://test.test
)を入れたい。
方法としては(Seleniumで簡単にrefererを設定できなかったので)一旦ダミーサイトにアクセスし、そこからページ遷移で自作したサイトに行きます。
なお、Seleniumやダミーサイトは同じubuntu上での動作を前提として作ってます。
ダミーサイトの構築
/etc/hosts
ファイルの最後に下の行のように、refererで使用するURLを追記します。
もし複数のrefererで検証したい場合は、そのrefererの分だけ追記します。
127.0.0.1 test.test
(どこでもいいのですが)~/Documents/
に下のダミーページindex.html
を作成します
<html>
<head>
<title>dummy-site<title>
</head>
<body>
dummy-site
</body>
</html>
先ほどのファイルindex.html
を作成したフォルダ~/Documents/
上で、下のコマンドを入れpythonのHTTPサーバを起動します。
sudo python3 -m http.server 80
ブラウザでhttp://test.test
にアクセスし、ダミーサイトが見れることを確認します。
複数入れた場合は、全てのサイトで同様に見れるか確認します。
Seleniumのスクリプト
検証用スクリプトにreferer偽装部分を追記します。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://test.test") #referer偽装部分
driver.execute_script("window.location.href='http://hoge.hoge'") #referer偽装部分
...
これでオフライン環境下で、好きなrefererを入れて動作検証ができると思います。
上記の例ではURLのPATHまで入れてませんが、ダミーページを作り込めばPATH等も入れることはできると思います。
おわりに
本当はhosts
を書き換えずにreferer偽装をしたかったので、もっといい方法があれば教えてください。