使用代理 IP 的 Selenium Webdriver

Selenium Webdriver using Proxy IP

我正在使用 selenium webdriver 从 website.due 抓取来自我的 IP 的大量流量的数据,现在我无法访问网站(可能是我的 ip 被网站阻止)。

有什么方法可以设置代理 IP,以便每次 运行 网络驱动程序时都将其视为新 IP..?

您可以按照以下方式使用 selenium webdriver 设置代理 IP :

FirefoxProfile profile = new FirefoxProfile();
profile.addAdditionalPreference("network.proxy.http", "localhost");
profile.addAdditionalPreference("network.proxy.http_port", "8080");
WebDriver driver = new FirefoxDriver(profile);

您应该在上面的代码中更改您想要的 IP 地址和端口。

更多详情,请查看:Selenium Webdriver with proxy

因为你经常抓取,你可能需要一个可靠的代理提供商。因此,他们中的大多数人都提供自己的 api 来进行身份验证并使用他们的代理池。 我从 Luminati.io

那里得到了这段代码 (java)
package example;

import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpHost proxy = new HttpHost("zproxy.luminati.io", 22225);
        String res = Executor.newInstance()
            .auth(proxy, "lum-customer-CUSTOMER-zone-YOURZONE", "YOURPASS")
            .execute(Request.Get("http://www.telize.com/geoip").viaProxy(proxy))
            .returnContent().asString();
        System.out.println(res);
    }
}

那里有更复杂的示例代码。

非专业刮

如果你只是想插入任何故意的代理 IP 来测试,你可以使用这个:

FirefoxProfile profile = new FirefoxProfile();
host='149.215.113.110' 
port='9150'
profile.SetPreference("network.proxy.type", 1);
profile.SetPreference("network.proxy.http", host);
profile.SetPreference("network.proxy.http_port", int(port));
driver = new FirefoxDriver(profile);