2015-12-07 35 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', 
    ]