繁体   English   中英

如何覆盖 Chrome 的 Selenium Headless 用户代理?

[英]How to override Selenium Headless user agent for chrome?

我有以下代码

import sys
from os import path
import os
import numpy as np
import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

class DDDDDD(object):
    def __init__(self, date=None, path_to_save=None, chomedriver_exe_path=None, pred=True):
        self.pred = pred
        if chomedriver_exe_path is None:
            home = os.path.expanduser('~')
            self.chomedriver_exe_path = home + '/Downloads/chromedriver.exe'
        else:
            self.chomedriver_exe_path = chomedriver_exe_path
        self.driver = None

    def setup_driver(self):
        user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'
        chrome_options = Options()
        chrome_options.add_argument("headless") # --headless
        chrome_options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36')
        chrome_options.add_argument("--window-size=1920x1080")
        chrome_driver = self.chomedriver_exe_path
        self.driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)
        return self.driver


ddddd = DDDDDD()
ddddd.setup_driver()

ddddd.driver.get("http://kluge.in-chemnitz.de/tools/browser.php")

ddddd.driver.save_screenshot('browser.png')

我试图覆盖用户代理,所以这个特定的站点我试图访问银行(自动个人交易数据下载)。 我尝试了以下解决方案。

来源 1来源 2

没有一个似乎工作。 我使用的测试站点的屏幕截图包含无头一词。 有人可以帮我为 chrome 浏览器做这个吗? 其他浏览器解决方案绝对可以接受,但我更喜欢 chrome 浏览器。

尝试这个:

chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36')

这使用 Java 工作。 您可以使用 Python 尝试使用相同的逻辑。 我认为 Python 有 browser.execute_script。

使用的扩展程序是 Chrome ModHeader 扩展程序。

String userAgent = PropertyReader.readItem("USER-AGENT");
String xmsisdn = PropertyReader.readItem("X-MSISDN");
String xUPSUBNO = PropertyReader.readItem("xUPSUBNO");

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File(PropertyReader.readItem("CHROMEEXT")));

options.addArguments("--start-maximized");
options.addArguments("disable-infobars");

System.setProperty("webdriver.chrome.driver","Path\\chromedriver.exe");

//Launch the Browser 

webDriver = new ChromeDriver(options); 

// set the context on the extension so the localStorage can be accessed 

webDriver.get("chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/icon.png");

// setup ModHeader with name and value
JavascriptExecutor js;
((JavascriptExecutor)webDriver).executeScript(
"localStorage.setItem('profiles', JSON.stringify([{                " +
"  title: 'Selenium', hideComment: true, appendMode: '',           " +
"  headers: [                                                      " +
"    {enabled: true, name: 'User-Agent', value: '"+userAgent+"', comment: ''}, " +
"    {enabled: true, name: 'X-UP-SUBNO', value: '"+xUPSUBNO+"', comment: ''}  " +
"  ],                                                              " +
"  respHeaders: [],                                                " +
"  filters: []                                                     " +
"}]));

暂无
暂无

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

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