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 >}}