新手教程 | Python自动化测试Selenium+chrome连接HTTP代理(账密+白名单)

简介: 虽然 Selenium 主要用于网站的前端测试,但其核心是浏览器用户代理库。本次来说说,Python使用Selenium调用Chrome浏览器并通过HTTP代理进行自动化测试

Selenium 有很多功能, 但其核心是 web 浏览器自动化的一个工具集,它允许用户模拟终端用户执行的常见活动;将文本输入到字段中,选择下拉值和复选框,并单击文档中的链接。 它还提供许多其他控件,比如鼠标移动、任意 JavaScript 执行等等。

虽然 Selenium 主要用于网站的前端测试,但其核心是浏览器用户代理库。本次来说说,Python使用Selenium调用Chrome浏览器并通过HTTP代理进行自动化测试:

白名单模式代码示例:

fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicetargetURL="http://myip.ipip.net"#访问的目标站点proxyAddr="您的代理IP:端口号"if__name__=='__main__':
browser_location=r".\Chrome\chrome.exe"#指定浏览器路径位置driver_location=r".\Chrome\chromedriver.exe"#指定Driver路径位置option=webdriver.ChromeOptions()
option.binary_location=browser_location#设置浏览器位置option.add_argument("--start-maximized") #窗口最大化运行option.add_argument('--proxy-server=%(server)s'% {"server": proxyAddr})
driver=webdriver.Chrome(service=Service(driver_location), options=option)
driver.get(targetURL)
print(driver.page_source)

运行结果:

账密模式代码如下:

fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServiceimportstringimportzipfiletargetURL="http://d.qg.net/ip"#访问的目标站点proxyHost="您的代理IP"proxyPort="端口号"authKey="请改成您的Key"password="请改成您的AuthPwd"# 账密模式defcreate_proxy_auth_extension(proxy_host, proxy_port, proxy_username, proxy_password, scheme='http', plugin_path=None):
ifplugin_pathisNone:
plugin_path=r'./{}_{}_qgnet_proxyauth_plugin.zip'.format(proxy_username, proxy_password)
manifest_json="""        {            "version": "1.0.0",            "manifest_version": 2,            "name": "QG.NET Proxy",            "permissions": [                "proxy",                "tabs",                "unlimitedStorage",                "storage",                "",                "webRequest",                "webRequestBlocking"            ],            "background": {                "scripts": ["background.js"]            },            "minimum_chrome_version":"22.0.0"        }        """background_js=string.Template(
"""        var config = {            mode: "fixed_servers",            rules: {                singleProxy: {                    scheme: "${scheme}",                    host: "${host}",                    port: parseInt(${port})                },                bypassList: ["localhost"]            }          };        chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});        function callbackFn(details) {            return {                authCredentials: {                    username: "${username}",                    password: "${password}"                }            };        }        chrome.webRequest.onAuthRequired.addListener(            callbackFn,            {urls: [""]},            ['blocking']        );        """    ).substitute(
host=proxy_host,
port=proxy_port,
username=proxy_username,
password=proxy_password,
scheme=scheme,
    )
withzipfile.ZipFile(plugin_path, 'w') aszp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
returnplugin_pathif__name__=='__main__':
# browser_location = r"C:\Users\Administrator\Desktop\Chrome\chrome.exe"  # 指定浏览器路径位置driver_location=r"C:\Users\Administrator\Desktop\Chrome\chromedriver.exe"# 指定Driver路径位置proxy_auth_plugin_path=create_proxy_auth_extension(
proxy_host=proxyHost,
proxy_port=proxyPort,
proxy_username=authKey,
proxy_password=password)
option=webdriver.ChromeOptions()
# option.binary_location = browser_location #设置浏览器位置option.add_argument("--start-maximized") #窗口最大化运行option.add_extension(proxy_auth_plugin_path) #添加proxy插件driver=webdriver.Chrome(service=Service(driver_location), options=option)
driver.get(targetURL)
print(driver.page_source)

返回结果如下:

相关文章
|
1月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
149 69
|
1天前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
|
3月前
|
Web App开发 数据采集 数据安全/隐私保护
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
|
5月前
|
数据采集 网络安全 Python
【Python】怎么解决:urllib.error.HTTPError: HTTP Error 403: Forbidden
解决 `urllib.error.HTTPError: HTTP Error 403: Forbidden`错误需要根据具体情况进行不同的尝试。通过检查URL、模拟浏览器请求、使用代理服务器和Cookies、减慢请求速度、使用随机的User-Agent以及使用更加方便的 `requests`库,可以有效解决此类问题。通过逐步分析和调试,可以找到最合适的解决方案。
391 18
|
5月前
|
数据采集 数据安全/隐私保护 Python
【Python】已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden
通过上述方法,可以有效解决 `urllib.error.HTTPError: HTTP Error 403: Forbidden` 错误。具体选择哪种方法取决于服务器对请求的限制。通常情况下,添加用户代理和模拟浏览器请求是最常见且有效的解决方案。
386 10
|
5月前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
136 3
|
6月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
1148 8
|
7月前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
469 1
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
6月前
|
JSON API 数据格式
Python中获取HTTP请求响应体的详解
本文介绍了如何使用Python的`requests`和`urllib`库发送HTTP请求并处理响应体。`requests`库简化了HTTP请求过程,适合快速开发;`urllib`库则更为底层,适用于性能要求较高的场景。文章详细演示了发送GET请求、处理JSON响应等常见操作。
149 3
|
7月前
|
Java 网络架构 Kotlin
kotlin+springboot入门级别教程,教你如何用kotlin和springboot搭建http
本文是一个入门级教程,介绍了如何使用Kotlin和Spring Boot搭建HTTP服务,并强调了Kotlin的空安全性特性。
191 7
kotlin+springboot入门级别教程,教你如何用kotlin和springboot搭建http

热门文章

最新文章