selenium-Http 代理


title: “Http 代理”
weight: 7

代理服务器充当客户端和服务器之间的请求中介.
简述而言, 流量将通过代理服务器流向您请求的地址, 然后返回.

使用代理服务器用于Selenium的自动化脚本,
可能对以下方面有益:

  • 捕获网络流量
  • 模拟网站后端响应
  • 在复杂的网络拓扑结构或严格的公司限制/政策下访问目标站点.

如果您在公司环境中,
并且浏览器无法连接到URL,
则最有可能是因为环境, 需要借助代理进行访问.

Selenium WebDriver提供了如下设置代理的方法

{{< code-tab >}}
{{< code-panel language=“java” >}}
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class proxyTest {
public static void main(String args) {
Proxy proxy = new Proxy();
proxy.setHttpProxy(“HOST:PORT”);
ChromeOptions options = new ChromeOptions();
options.setCapability(“proxy”, proxy);
WebDriver driver = new ChromeDriver(options);
driver.get(“https://www.google.com/”);
driver.manage().window().maximize();
driver.quit();
}
}
{{< / code-panel >}}
{{< code-panel language=“python” >}}
from selenium import webdriver

PROXY = “HOST:PORT
webdriver.DesiredCapabilities.FIREFOX[‘proxy’] = {
“httpProxy”: PROXY,
“ftpProxy”: PROXY,
“sslProxy”: PROXY,
“proxyType”: “MANUAL”,

}

with webdriver.Firefox() as driver:
# Open URL
driver.get(“https://selenium.dev”)

{{< / code-panel >}}
{{< code-panel language=“csharp” >}}
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

public class ProxyTest{
public static void Main() {
ChromeOptions options = new ChromeOptions();
Proxy proxy = new Proxy();
proxy.Kind = ProxyKind.Manual;
proxy.IsAutoDetect = false;
proxy.SslProxy = “HOST:PORT”;
options.Proxy = proxy;
options.AddArgument(“ignore-certificate-errors”);
IWebDriver driver = new ChromeDriver(options);
driver.Navigate().GoToUrl(“https://www.selenium.dev/”);
}
}
{{< / code-panel >}}
{{< code-panel language=“ruby” >}}

this code was written with Selenium 4

proxy = Selenium::WebDriver::Proxy.new(http: ‘HOST:PORT’)
cap = Selenium::WebDriver::Remote::Capabilities.chrome(proxy: proxy)

driver = Selenium::WebDriver.for(:chrome, capabilities: cap)
driver.get(‘http://google.com’)
{{< / code-panel >}}
{{< code-panel language=“javascript” >}}
let webdriver = require(‘selenium-webdriver’);
let chrome = require(‘selenium-webdriver/chrome’);
let proxy = require(‘selenium-webdriver/proxy’);
let opts = new chrome.Options();

(async function example() {
opts.setProxy(proxy.manual({http: ‘HOST:PORT’}));
let driver = new webdriver.Builder()
.forBrowser(‘chrome’)
.setChromeOptions(opts)
.build();
try {
await driver.get(“https://selenium.dev”);
}
finally {
await driver.quit();
}
}());
{{< / code-panel >}}
{{< code-panel language=“kotlin” >}}
import org.openqa.selenium.Proxy
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions

class proxyTest {
fun main() {

    val proxy = Proxy()
    proxy.setHttpProxy("<HOST:PORT>")
    val options = ChromeOptions()
    options.setCapability("proxy", proxy)
    val driver: WebDriver = ChromeDriver(options)
    driver["https://www.google.com/"]
    driver.manage().window().maximize()
    driver.quit()
}

}
{{< / code-panel >}}
{{< / code-tab >}}

官方链接为:/zh-cn/documentation/webdriver/drivers/options/