简体   繁体   中英

How to override Selenium Headless user agent for chrome?

I have the following code

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')

I am trying to override the user agent so this particular site I am trying to visit a banking (automate personal transaction data downloads). I have tried the following solutions.

source 1 source 2

None seem to work. The screenshot from a test site i used contains the word headless. Could someone help me do this for the chrome browser? Other browser solutions are definitely acceptable but I would prefer the chrome browser.

尝试这个:

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')

This works using Java. You might try it out the same logic with Python. I think Python has browser.execute_script.

The extension used is Chrome ModHeader extension.

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: []                                                     " +
"}]));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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