3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby + selenium + stone + 認証プロキシ

Posted at

#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/

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?