MAGAZINE
ルーターマガジン
Chromeにプロキシを設定して、アクセス元IPアドレスを変更する方法ーselenium、curlのプロキシ設定含むー
rooterエンジニアのtoyamaです。
みなさんは大学内や会社内など限られた場所からしか見れないページを自宅から見たいと思ったことはないでしょうか?この方法として、すでに大学や会社のネットに接続されているパソコンをリモートデスクトップする方法や大学内や会社内のサーバーを経由する方法などがあります。
今回はその中でも大学内や会社内のサーバーを経由する方法、つまりプロキシを変えてネットに接続する方法をご紹介します。
プロキシとは
プロキシとは、インターネットに接続する際、高速なアクセスや安全な通信を確保するための中継サーバ(プロキシサーバ)のことを指します。インターネットに接続する際、このプロキシサーバを変えることでIPアドレスを変更することができます。この方法により、大学内や会社内のプロキシサーバーを経由することで、本来はそこでしか見れないページも見れるようになります。
Google Chrome
Google Chromeの設定からプロキシの設定を選択すると、パソコン全体のネット接続設定の画面を開いてしまいます。ここからでも設定できますが、Chrome以外に通信していた場合、この通信のプロキシまで変わってしまいます。ここではChromeのプロキシだけ変える方法をご紹介します。
Windowsでのプロキシ変更方法
- Windowsボタン + R を押して、「ファイル名を指定して実行」を開く
次のコマンドを実行してChromeを起動(以下http://proxy.example.com:8000をサンプルのプロキシサーバとします。)
chrome --proxy-server=http://proxy.example.com:8000
http://ifconfig.ioでIPアドレスを確認、プロキシサーバのIPになっていれば成功
Macのでプロキシ変更方法
コマンドラインから次のコマンドを実行してChromeを起動
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server=http://proxy.example.com:8000
http://ifconfig.ioでIPアドレスを確認、プロキシサーバのIPになっていれば成功
Ubuntu(Linux)でのプロキシ変更方法
コマンドラインから次のコマンドを実行してChromeを起動
google-chrome --proxy-server=http://proxy.example.com:8000
http://ifconfig.ioでIPアドレスを確認、プロキシサーバのIPになっていれば成功
以上がChromeのみプロキシを変更する方法になります。 以下ではおまけとして、curlやseleniumでのプロキシ設定方法をご紹介します。
curl
curlコマンドで任意のプロキシサーバーを経由するには次のようなオプションになります。
$ curl -x http://proxy.example.com:8000 'https://ifconfig.io'
nethttp
nethttpでプロキシを設定する方法は次のようになります。 Net::HTTPに続いてProxy()メソッド内でプロキシの設定を行います。
require 'net/http'
require 'uri'
proxy_host = 'http://proxy.example.com'
proxy_port = 8000
uri = URI.parse("http://ifconfig.io")
response = Net::HTTP.Proxy(proxy_host, proxy_port).get_response(uri)
openuri
open-uriではopenメソッド内にプロキシの設定をhashで行います。
require 'open-uri'
p OpenURI.open_uri('http://ifconfig.io', {:proxy => 'http://proxy.example.com:8000'}).read
selenium
seleniumでは、chromeOptionsでプロキシ設定を行えます。
require 'selenium-webdriver'
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {args: ["--user-agent=#{user_agent}", "--proxy-server=http://proxy.example.com:8000"]})
session = Selenium::WebDriver.for :chrome, desired_capabilities: caps
session.get "http://ifconfig.io"
mechanize
mechanizeではset_proxyメソッドで、プロキシを設定することができます。
require 'mechanize'
agent = Mechanize.new
agent.set_proxy('http://proxy.example.com', 8080)
page = agent.get('http://ifconfig.io')
p page.search('body > main > div:nth-child(1) > ul > li:nth-child(1) > div.col-sm-9')
まとめ
以上がプロキシを変えてネットに接続する方法になります。
クライアント様の自社サイト上コンテンツのクローリングを承ることもよくありますが、弊社のクローラーのみクローリングを許可するために、アクセス元のIPアドレスで制限を設けられることもあります。その場合にはプロキシサーバーのIPアドレスをアクセス元として許可して頂き、クローラーはプロキシサーバーを経由してクローリングを行うと複数台のクローラーを扱う場合に運用上楽をできたりします。
ご参考になれば幸いです。
CONTACT
お問い合わせ・ご依頼はこちらから