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

问题描述 投票:0回答:1

我有以下代码

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

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

source 1 source 2

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

python selenium browser
1个回答
0
投票

这适用于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: []                                                     " +
"}]));
© www.soinside.com 2019 - 2024. All rights reserved.