首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Selenium代理网络

Python Selenium代理网络
EN

Stack Overflow用户
提问于 2022-01-21 19:37:00
回答 2查看 710关注 0票数 4

概述

我正在使用代理网络,并希望在Python上使用Selenium来配置它。我见过许多帖子使用HOST:PORT方法,但是代理网络使用 http://USER:PASSWORD@PROXY:PORT"URL方法“。

SeleniumWire

我发现SeleniumWire是将代理网络的"URL方法“连接到Selenium刮取器的一种方式。请参见基本的SeleniumWire配置:

代码语言:javascript
复制
from seleniumwire import webdriver

options = {
    'proxy':
    {
        'http': 'http://USER:PASSWORD@PROXY:PORT',
        'https': 'http://USER:PASSWORD@PROXY:PORT'
    },
}

driver = webdriver.Chrome(seleniumwire_options=options)
driver.get("https://some_url.com")

这个正确地向驱动程序添加和循环代理,但是在许多网站上,刮刀被CloudFlare迅速阻塞。这种阻塞是在本地IP上运行时不会发生的事情。在搜索SeleniumWire的GitHub Repository 问题之后,我发现这是由TLS指纹导致的,并且没有针对这个问题的当前解决方案。

硒选项

我尝试以传统的selenium方式配置代理:

代码语言:javascript
复制
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://USER:PASSWORD@PROXY:PORT")
driver = webdriver.Chrome(options=options)
driver.get("https://some_url.com")

浏览器实例确实打开,但由于网络错误而失败。浏览器实例不会在已建立的URL中加载。

码头配置

此配置的最终结果将是在港口容器(即Lambda函数中的)中运行python代码。不知道这是否引入了一个新的抽象级别。

摘要

我还可以使用哪些其他资源来正确配置Selenium以使用IP循环的"URL方法“?

版本

  • python 3.9
  • 硒3.141.0
  • 码头工人20.10.11

支持票

Github:https://github.com/SeleniumHQ/selenium/issues/10605

ChromeDriver:https://bugs.chromium.org/p/chromedriver/issues/detail?id=4118

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-09 17:22:16

硒扩展:

代理网络或"URL“代理可以使用Selenium作为扩展进行配置。创建以下JS脚本和JSON文件:

JS脚本("background.js")

代码语言:javascript
复制
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "http",
host: "<PROXY>",
port: parseInt(<PORT>)
},
bypassList: ["foobar.com"]
}
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
function callbackFn(details) {
return {
authCredentials: {
username: "<USER>",
password: "<PASSWORD>"
}
};
}
 
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
['blocking']
);

JSON文件("manifest.json")

代码语言:javascript
复制
{
    "version": "1.0.0",
    "manifest_version": 2,
    "name": "Chrome Proxy",
    "permissions": [
        "proxy",
        "tabs",
        "unlimitedStorage",
        "storage",
        "<all_urls>",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": ["background.js"]
    },
    "minimum_chrome_version":"22.0.0"
}

Zip background.js和manifest.json as proxy.zip并编写了以下代码:

代码语言:javascript
复制
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_extension("proxy.zip")
driver = webdriver.Chrome(options=options)

driver.get("https://whatismyipaddress.com/")
票数 0
EN

Stack Overflow用户

发布于 2022-08-23 09:15:21

试着用这个

代码语言:javascript
复制
options.add_argument("--ignore-certificate-errors")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70806778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档