为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中使用代理运行Selenium Webdriver

在Python中使用代理运行Selenium Webdriver

慕斯王 2021-03-29 21:18:47
我正在尝试在Python中运行Selenium Webdriver脚本来执行一些基本任务。通过Selenium IDE接口运行机器人时,我可以使它运行正常(即:仅使GUI重复我的操作时)。但是,当我将代码导出为Python脚本并尝试从命令行执行时,Firefox浏览器将打开,但无法访问起始URL(错误返回到命令行,程序停止)。无论我尝试访问哪个网站,都在发生这种情况。我在此处包括了一个非常基本的代码以进行演示。我认为我没有正确包含代码的代理部分,因为返回的错误似乎是由代理生成的。
查看完整描述

4 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

这样的事情怎么样


PROXY = "149.215.113.110:70"


webdriver.DesiredCapabilities.FIREFOX['proxy'] = {

    "httpProxy":PROXY,

    "ftpProxy":PROXY,

    "sslProxy":PROXY,

    "noProxy":None,

    "proxyType":"MANUAL",

    "class":"org.openqa.selenium.Proxy",

    "autodetect":False

}


# you have to use remote, otherwise you'll have to code it yourself in python to 

driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.FIREFOX)


查看完整回答
反对 回复 2021-04-01
?
青春有我

TA贡献1784条经验 获得超8个赞

我的解决方案:


def my_proxy(PROXY_HOST,PROXY_PORT):

        fp = webdriver.FirefoxProfile()

        # Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5

        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("general.useragent.override","whater_useragent")

        fp.update_preferences()

        return webdriver.Firefox(firefox_profile=fp)

然后调用您的代码:


my_proxy(PROXY_HOST,PROXY_PORT)

我在此代码中遇到了问题,因为我将字符串作为端口#传递了:


 PROXY_PORT="31280"

这个很重要:


int("31280")

您必须传递一个整数而不是一个字符串,否则您的Firefox配置文件将不会被设置为正确的端口,并且通过代理的连接将不起作用。


查看完整回答
反对 回复 2021-04-01
  • 4 回答
  • 0 关注
  • 322 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信