【问题标题】:How does one pass the user-agent parameter to Selenium::Chrome?如何将用户代理参数传递给 Selenium::Chrome?
【发布时间】:2022-01-23 04:14:09
【问题描述】:

我正在尝试在 Selenium::Chrome 中设置用户代理参数,但没有找到正确的方法。有没有人成功做到这一点?

my $driver = Selenium::Chrome->new(
    'user-agent' => 'TEST',
    '--user-agent' => 'TEST',
    'chromeOptions' => {
        prefs => {
            'user-agent' => 'TEST',
            '--user-agent' => 'TEST',
        },
    },
    extra_capabilities => { 
        'chromeOptions' => {
            prefs => {
                'user-agent' => 'TEST',
                '--user-agent' => 'TEST',
            },
        },
        'goog:chromeOptions' => {
            prefs => {
                'download.default_directory' => '/tmp',
                'user-agent' => 'TEST',
                '--user-agent' => 'TEST'
            },
            args => [ 'headless' ]
        }
    }
);

【问题讨论】:

  • 根据文档custom_args 应与--user-agent 一起使用。

标签: selenium perl selenium-chromedriver


【解决方案1】:

user-agent 可以通过 custom_args 参数设置。

要在 Selenium::Chrome 中设置user-agent 参数,您可以使用以下解决方案:

my $chrome = Selenium::Chrome->new(
    custom_args => "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
);

PS:理想情况下,您应该在What is my user agent? 之后传递一个有效的user-agent

【讨论】:

  • 啊,我们快到了。使用它,我收到以下错误:sh: -c: line 0: syntax error near unexpected token ``('sh: -c: line 0: ``"/usr/local/bin/chromedriver" --port=57511 --url-base=wd/hub --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 > /dev/null 2>&1 &' 所以看起来它没有正确转义。我在字符串周围加上双引号,错误就消失了。但是发送的用户代理没有改变。
  • chromedriver 好像不接受 --user-agent=XYZ
  • @lschult2 传递访问 url whatismybrowser.com/detect/what-is-my-user-agent 的原始 UserAgent
  • @lschult2 如果您有任何疑问,请随时在Selenium 房间问我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多