繁体   English   中英

Proxy + Selenium + PhantomJS无法更改User-Agent

[英]Proxy+Selenium+PhantomJS can't change User-Agent

当使用带有phantomjs的代理时,它使用默认的python用户代理。

在ubuntu 14.04上运行:Python 3.5.1

service_args = []

if self.proxy:
    service_args.extend([
        '--proxy={}:{}'.format(self.proxy.host, self.proxy.port),
        '--proxy-type={}'.format(self.proxy.proto),
    ])

    if self.proxy.username and self.proxy.password:
        service_args.append(
            '--proxy-auth={}:{}'.format(self.proxy.username, self.proxy.password)
        )

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 "
    "(KHTML, like Gecko) Chrome/15.0.87"
)

self.webdriver = webdriver.PhantomJS(service_args=service_args, desired_capabilities=dcap)

并且错误:

消息:错误消息=>'无法找到带有css选择器的元素'#navcnt td.cur''由Request => {“headers”引起:{“接受”:“application / json”,“Accept-Encoding”:“同一性”, “连接”: “关闭”, “内容长度”: “105”, “内容类型”: “应用/ JSON;字符集= UTF-8”, “主机”: “127.0.0.1:39281” , “User-Agent”:“Python-urllib / 3.5” } ...

在类似的问题中得出结论,问题是由代理提供商通过在服务器级别设置用户代理引起的,但是我怀疑这是因为我可以使用带有chrome的代理修改它。

这对我有用:

在我的例子中,我仔细研究了PhantomJS驱动程序的功能:

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87"

service_args = [
    '--proxy=5.135.176.41:3123',
    '--proxy-type=http',
]
phantom = webdriver.PhantomJS(js_path, desired_capabilities=dcap, service_args =service_args)
print(phantom.capabilities)

输出是:

{'databaseEnabled': False, 'handlesAlerts': False, 'rotatable': False, 'browserConnectionEnabled': False, 'browserName': 'phantomjs', 'takesScreenshot': True, 'nativeEvents': True, 'locationContextEnabled': False, 'phantomjs.page.settings.userAgent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87', 'platform': 'linux-unknown-64bit', 'version': '2.1.1', 'applicationCacheEnabled': False, 'driverName': 'ghostdriver', 'webStorageEnabled': False, 'javascriptEnabled': True, 'cssSelectorsEnabled': True, 'proxy': {'proxyType': 'direct'}, 'acceptSslCerts': False, 'driverVersion': '1.2.0'}

这意味着userAgent实际上是正确设置的( 'phantomjs.page.settings.userAgent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87' ),但不知怎的,它确实不要使用service-args设置的代理。 尽管如此,手动操作这些功能非常好:

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87"

phantom = webdriver.PhantomJS(js_path, desired_capabilities=dcap)

phantom.capabilities["acceptSslCerts"] = True
phantom.capabilities["proxy"] = {"proxy": "5.135.176.41:3123",
                                 "proxy-type": "http"}
max_wait = 20

phantom.set_window_size(1024, 768)
phantom.set_page_load_timeout(max_wait)
phantom.set_script_timeout(max_wait)
phantom.get(url)

感谢您提出这个问题,我实际上正在寻找PhantomJS的代理已经有一段时间了,这个问题让我走上正轨。 我希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM