2013-08-01 14 views
12

私は、自動ブラウザシミュレーションとPythonでのWebスクレイピングにセレンを使用しています。しかし今、プロキシサーバーの後ろでそれを実行しなければなりません。今セレンはウィンドウを開きますが、開いているブラウザにプロキシ設定が設定されていないため、要求されたページを開くことができませんでした。現在のコードは次のとおりです(サンプル):プロキシサーバーの背後でセレンを稼働しています

from selenium import webdriver 

sel = webdriver.Firefox() 
sel.get('http://www.google.com') 
sel.title 
sel.quit() 

プロキシサーバーでも同様に動作するように変更するにはどうすればよいですか。あなたはこのように、望ましい機能やブラウザのプロファイルを設定する必要が

+0

あなたはこのHTTPを試すことができます/ /stackoverflow.com/a/38168865/5409601 –

答えて

21

+0

あなたが提案したが、まだプロキシサーバーを通過できなかった。 – Aryabhatt

+0

環境設定の更新後にセレンで開いたブラウザ設定を確認した。実際に問題は、http_portが正しく設定されておらず(0に設定されているため)、接続していないためです。ポート設定に問題はありますか? – Aryabhatt

+0

うーん、数値(文字列ではない)として設定してみることはできますか? – alecxe

8

正式なSeleniumのドキュメント(http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy)には、プロキシの使用に関する明確で有用なガイドラインがあります。 Firefoxの場合 (あなたのサンプルコードでの選択のブラウザである)あなたが次のことを行う必要があります。

from selenium import webdriver 
from selenium.webdriver.common.proxy import * 

myProxy = "host:8080" 

proxy = Proxy({ 
    'proxyType': ProxyType.MANUAL, 
    'httpProxy': myProxy, 
    'ftpProxy': myProxy, 
    'sslProxy': myProxy, 
    'noProxy': '' # set this value as desired 
    }) 

driver = webdriver.Firefox(proxy=proxy) 
3

これは、仕事をする:

import selenium 
from selenium.webdriver.common.proxy import * 

proxyHost = "my.proxy.host or IP" 
proxyPort = "55555" 

fp = webdriver.FirefoxProfile() 
fp.set_preference("network.proxy.type", 1) 
#fp.set_preference("network.proxy.http", proxyHost) #HTTP PROXY 
#fp.set_preference("network.proxy.http_port", int(proxyPort)) 
#fp.set_preference("network.proxy.ssl", proxyHost) #SSL PROXY 
#fp.set_preference("network.proxy.ssl_port", int(proxyPort)) 
fp.set_preference('network.proxy.socks', proxyHost) #SOCKS PROXY 
fp.set_preference('network.proxy.socks_port', int(proxyPort)) 
fp.update_preferences() 

driver = webdriver.Firefox(firefox_profile=fp) 

driver.get("http://www.whatismyip.com/") 
+1

ユーザの追加方法:pass – Umair

+1

注意事項: 'proxyHost'がホスト名である場合、_" http:// "_プレフィックスを含むべきではありません – salvob

0
def install_proxy(PROXY_HOST,PROXY_PORT): 
    fp = webdriver.FirefoxProfile() 
    print PROXY_PORT 
    print PROXY_HOST 
    fp.set_preference("network.proxy.type", 1) 
    fp.set_preference("network.proxy.http",PROXY_HOST) 
    fp.set_preference("network.proxy.http_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.https",PROXY_HOST) 
    fp.set_preference("network.proxy.https_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.ssl",PROXY_HOST) 
    fp.set_preference("network.proxy.ssl_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.ftp",PROXY_HOST) 
    fp.set_preference("network.proxy.ftp_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.socks",PROXY_HOST) 
    fp.set_preference("network.proxy.socks_port",int(PROXY_PORT)) 
    fp.set_preference("general.useragent.override","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A") 
    fp.update_preferences() 
    return webdriver.Firefox(firefox_profile=fp) 
関連する問題