#stoneを使ったseleniumの認証プロキシへの接続
seleniumでluminatiの認証プロキシに接続するのが大変だったので共有します。
環境
・AWS Centos7
・言語:Ruby
・認証プロキシ:luminati
stoneというTCP/UDP転送モジュールを使って、
selenium->ブラウザ->stone(localhost:3200)->認証プロキシという順で接続に成功しました。
今回はRubyを使用していますが、「localhost:3200」にアクセスするだけなので応用が利く方法だと思います。また、stoneはwindowsでも使用できるようです。
ちなみに以下の方法を試しましたが失敗しました。
・chromeのオプションコマンドでoptions.add_argument("--proxy-auth=#{user}:#{pass}")みたいにするやつ
・Selenium::WebDriver::Proxy.newで、引数に「user:pass@host:port」みたいにするやつ
###AWSにstoneをダウンロードして解凍
$ cd /usr/local/src
$ sudo wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
$ sudo tar zxvf stone-2.3e.tar.gz
###Makefileを書き換える
$ cd stone-2.3d-2.3.2.7/
$ sudo vi Makefile
下のほうに行くとlinux:っていうのが見えてくるので、「-D_GNU_SOURCE」を追記します。
・変更前
linux:
$(MAKE) FLAGS="-O -Wall -DCPP='"/usr/bin/cpp -traditional"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
・変更後
linux:
$(MAKE) FLAGS="-O -Wall -DCPP='"/usr/bin/cpp -traditional"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL -D_GNU_SOURCE $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
linuxコマンドだと「a」で追記、「w!」で上書き「q!」で終了できます。
###stoneファイルの作成
$ sudo make linux-ssl
これでstoneというファイルができれば成功
###インストール(Pathを通す)
$ sudo cp stone /usr/local/bin/
###認証情報のBase64エンコード
たとえば認証プロキシが以下の時は
・host: luminati
・port: 8080
・user: takeda
・pass: 12345678
「takeda:12345678」をBase64エンコードして「dGFrZWRhOjEyMzQ1Njc4」となります。
Base64エンコードはここからできます。
http://www.convertstring.com/ja/EncodeDecode/Base64Encode
ネットに流すのがこわい人はフリーソフトもあります。
###stoneをバックグラウンドで実行
$ stone luminati:8080/proxy 3200 "Proxy-Authorization: Basic dGFrZWRhOjEyMzQ1Njc4" &
ex) $ stone host:port/proxy 3200 "Proxy-Authorization: Basic user:passをBase64エンコードしたもの" &
あとはseleniumでプロキシとして「localhost:3200」にアクセスすると、luminatiへ転送してくれるようになります。
###Selenium headlessChromeの場合(例)
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument("--proxy-server=localhost:3200") #stoneに接続
driver = Selenium::WebDriver.for :chrome, options: options
driver.get(url)
#何か処理#
driver.quit
###参考サイト
stoneのインストール
https://doruby.jp/users/taka/entries/CentOS_stone_
https://ameblo.jp/u-kun-win/entry-11941013718.html
http://noaboutsnote.hatenablog.com/entry/centos6x_stone
stoneの使い方
http://www.gcd.org/sengoku/stone/Welcome.ja.html
http://blog.nocorica.jp/2013/11/stone-proxy-auto-auth/