我已经尝试过用Selenium使用Zyte (正式的Crawerla)代理的许多方法。
它们提供了1-API密钥(用户名) 2-代理url/端口。
不需要密码。
我试过的..。
ChromeOptions options = new ChromeOptions();
var proxy = new Proxy();
proxy.Kind = ProxyKind.Manual;
proxy.IsAutoDetect = false;
proxy.SocksUserName = "<<API KEY>>";
proxy.SocksPassword = "";
proxy.HttpProxy =
proxy.SslProxy = "proxy.crawlera.com:8011";
options.Proxy = proxy;
IWebDriver driver = new ChromeDriver(options);当selenium负载产生以下内容时:

有趣的是,如果我手动添加用户名(API键),它确实会加载,但这违背了自动化的目的。
我尝试的第二个方法是:
ChromeOptions options = new ChromeOptions();
options.AddArguments("--proxy-server=<API KEY>::proxy.crawlera.com:8011");
options.AddArguments("--log-level=OFF");
IWebDriver driver = new ChromeDriver(options);我用::作为密码是空的。
此方法的错误是:
46784:44492:0219/015119.757:ERROR:validation_errors.cc(87)无效消息: VALIDATION_ERROR_DESERIALIZATION_FAILED
我想Zyte/Crawerla知识并不是真正需要的,它更多的是如何为selenium提供用户名,但没有密码,并让它成功地使用代理。
有人知道吗?(赞赏的例子)
发布于 2022-02-25 08:42:26
当使用无头浏览器时,您可以使用这个Crawlera-无头代理https://github.com/zytedata/zyte-smartproxy-headless-proxy。这将充当一个MITM代理,并将处理SPM的身份验证。因此,您不需要在C# Selenium脚本中提到Crawlera/SmartProxyManager身份验证。
Crawlera无头代理可以用作像下面这样的独立二进制文件。
crawlera-headless-proxy -c config.toml您可以在config.toml文件中提到API键、端口号和其他信任项。
它将在本地主机3128启动MITM服务器。在您的C#中,您需要提到代理主机/端口应该是localhost/127.0.0.1,端口应该是3128。
来自您的C#无头脚本的请求需要发送到Crawlera-无头代理,然后Crawlera-无头代理将将请求发送到SmartProxyManager/Crawlera。
因此,对于ex来说,代码可能如下所示:
ChromeOptions options = new ChromeOptions();
var proxy = new Proxy();
proxy.Kind = ProxyKind.Manual;
proxy.IsAutoDetect = false;
proxy.HttpProxy =
proxy.SslProxy = "127.0.0.1:3128";
options.Proxy = proxy;
IWebDriver driver = new ChromeDriver(options);https://stackoverflow.com/questions/66270733
复制相似问题