2015-12-07 53 views
4

好吧,我的目標是通過代理連接到https網站,需要身份驗證,無需任何人爲交互。Selenium - 幽靈問題與PhantomJS和代理驗證與火狐

解決方案#1:火狐

fp = webdriver.FirefoxProfile() 
fp.set_preference("network.proxy.type", 1) 
fp.set_preference("network.proxy.http", "IP") 
fp.set_preference("network.proxy.http_port", PORT) 
driver = webdriver.Firefox(firefox_profile=fp) 
driver.get("http://www.google.com") 

問題:一旦打開瀏覽器,它打開AUTH彈出用戶名和密碼。

alert = driver.switch_to_alert() 
alert.send_keys('balbla') 

不起作用,根本沒有反應。 也改變代理

http://username:[email protected] 

解決方案#2沒有運氣:PhantomJs

與phantomjs我設法在代碼中的身份驗證:

service_args = [ 
    '--proxy=https://IP:PORT', 
    '--proxy-type=http', 
    '--proxy-auth=USERNAME:PASSWORD', 
    ] 
br = webdriver.PhantomJS(PATH,service_args=service_args) 
br.get('https://www.google.com/') 

問題:我不能上網到任何https,例如我試圖進入https://www.gmail.com,我得到空白頁面。 代理與https一起工作(手動雙重檢查)。

加入

'--ssl-protocol=any' 

沒有達到預期效果。

我在Linux env下使用了python的selenium。尋找能夠幫助我解決問題的解決方案。

謝謝你了。

回答

0

我想這是一個有點晚:) - 但基本上從代理取消HTTPS,並設置代理類型爲https即:

service_args = [ 
    '--proxy=IP:PORT', 
    '--proxy-type=https', 
    '--proxy-auth=USERNAME:PASSWORD', 
    ]