在Stack Overflow上发现了一个实现方法:先给浏览器设置好代理,然后写一个Chrome插件,用来输入用户名和密码。
1、java代码:
public static void main(String[] args) throws IOException {
System.setProperty("webdriver.chrome.driver", "你的chromedriver.exe的目录");
ChromeOptions options = new ChromeOptions();
Map<String, Object> map = new HashMap<String, Object>();
map.put("httpProxy", "你的代理ip:端口");
Proxy proxy = new Proxy(map);
options.setProxy(proxy);
options.addExtensions(new File("你的proxy.zip的目录"));
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.ip138.com");
//退出浏览器
//driver.quit();
}
2、浏览器插件
将下面两个文件压缩打包成 proxy.zip
background.js
function callbackFn(details) {
return {
authCredentials: {
username: "你的代理用户名",
password: "你的代理密码"
}
};
}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
['blocking']
);
manifest.json
{
"manifest_version": 2,
"name": "Authentication for ...",
"version": "1.0.0",
"permissions": ["<all_urls>", "webRequest", "webRequestBlocking"],
"background": {
"scripts": ["background.js"]
}
}
参考资料: