您可以编写自己的 Firefox 扩展程序来代理,并从 Selenium 启动。您需要编写 2 个文件并打包它。
background.js
var proxy_host = "YOUR_PROXY_HOST";
var proxy_port = YOUR_PROXY_PORT;
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "http",
host: proxy_host,
port: proxy_port
},
bypassList: []
}
};
function proxyRequest(request_data) {
return {
type: "http",
host: proxy_host,
port: proxy_port
};
}
browser.proxy.settings.set({value: config, scope: "regular"}, function() {;});
function callbackFn(details) {
return {
authCredentials: {
username: "YOUR_USERNAME",
password: "YOUR_PASSWORD"
}
};
}
browser.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
['blocking']
);
browser.proxy.onRequest.addListener(proxyRequest, {urls: ["<all_urls>"]});
manifest.json
{
"name": "My Firefox Proxy",
"version": "1.0.0b",
"manifest_version": 2,
"permissions": [
"browsingData",
"proxy",
"storage",
"tabs",
"webRequest",
"webRequestBlocking",
"downloads",
"notifications",
"<all_urls>"
],
"background": {
"scripts": ["background.js"]
},
"browser_specific_settings": {
"gecko": {
"id": "myproxy@example.org"
}
}
}
接下来,您需要将这些文件以DEFLATED模式打包成zip归档文件,并在结尾处添加.xpi,例如my_proxy_extension.xpi。
您有两个选择:
签名您的扩展。 在此处您可以了解更多关于验证扩展和扩展结构的信息
或者
运行未签名的扩展。完成此步骤后:
- 在
about:config
中打开Firefox标志,并将选项xpinstall.signatures.required设置为false
或者
在文件末尾添加以下行:
pref("xpinstall.signatures.required",false);
完成以上步骤后,请运行Selenium并安装此扩展。
FirefoxProfile profile = new FirefoxProfile();
profile.addExtension(new File("path/to/my_proxy_extension.xpi"));
driver = new FirefoxDriver(profile);
ProfilesIni
的错误,提示信息为The type or namespace name 'ProfilesIni' could not be found
。 - Nick Kahn