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

时间:2018-08-07 14:19:03

标签: python selenium browser

我有以下代码

@Override
public void onBackPressed() {
    Intent a = new Intent(Intent.ACTION_MAIN);
    a.addCategory(Intent.CATEGORY_HOME);
    a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(a);
}

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

source 1 source 2

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

2 个答案:

答案 0 :(得分:1)

尝试一下:

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

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