当前位置: 首页 > 知识库问答 >
问题:

Proxy+Selenium+PhantomJS不能更改用户代理

蒋高杰
2023-03-14
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)

共有1个答案

柯宜年
2023-03-14

这是对我有效的:

在我的例子中,我仔细研究了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'}
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)
 类似资料:
  • 我一直在使用C#中的Selenium和PhantomJS,但我希望能够将我的用户代理伪装成这样:

  • 问题内容: 我在以下代码中: 我想打印用户代理HTTP标头,并可能对其进行更改。可能吗? 问题答案: Selenium中无法读取请求或响应头。您可以通过指示浏览器通过记录此类信息的代理进行连接来实现。 在Firefox中设置用户代理 更改Firefox用户代理的通常方法是在Firefox配置文件中设置变量。请注意,这与硒无关。 您可以指示Selenium使用与默认配置文件不同的配置文件,如下所示:

  • 我正试图更改我的用户代理,并将更改后的用户代理打印到终端,以检查它是否已成功更改,但我没有运气。 def拦截器(请求): 我也不能从selenium wire打印用户代理,我只能使用此方法。 打印(代理) 请有人帮忙,不胜感激:)

  • 问题内容: 我正在尝试找出一种方法,每当我在此特定脚本中通过Selenium(在Python中)打开Chrome时,Chrome页面都会自动打开,并选择另一个用户代理- 在这种情况下为Microsoft Edge Mobile(但我会从桌面访问它)。 因此,在进行了一些研究之后,我能够整理以下代码,我认为这些代码将在Chrome中执行用户代理开关,然后打开一个新的Bing.com页面: 但是,该代

  • 有一种方法可以在运行时对PhantomJS中的代理进行dinamily更改。下面是代码: 在中,我尝试: {“errormessage”:“找不到变量:幻影”,“request”:{“headers”:{“accept”:“application/json,image/png”,“connection”:“close”,“content-length”:“62”,“content-type”:“a