使用Selenium和代理用户名和密码在C#中进行无头浏览

简介: Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作。在C#中使用Selenium和爬虫代理加强版IP的时候,因为代理服务器需要用户名和密码进行认证,Chrome浏览器会弹出一个认证窗口要求输入用户名和密码。可以创建一个Chrome扩展插件,然后加载使用完成自动认证窗口。

Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作。有时候我们需要使用代理服务器来访问一些受限制的网站,或者隐藏我们的真实IP地址。如果代理服务器需要用户名和密码进行验证,那么我们就需要在Selenium中设置代理用户名和密码。

然而,在C#中使用Selenium和爬虫代理加强版IP的时候,因为代理服务器需要用户名和密码进行认证,Chrome浏览器会弹出一个认证窗口要求输入用户名和密码,而这个窗口是由操作系统提供的,不属于网页元素,所以Selenium无法识别或控制它。这就导致了我们无法通过Selenium自动输入用户名和密码,并且也无法关闭这个窗口。

目前还没有直接的方法可以解决这个问题,但是有一些可能的替代方案:

  • 使用其他支持设置代理用户名和密码的浏览器驱动,比如Firefox或者IE。
  • 使用第三方库或者工具来模拟键盘输入或者鼠标点击来填写或者关闭认证窗口。
  • 使用其他方式来绕过代理服务器的验证机制,比如修改请求头或者使用cookies。
  • 使用一个Chrome扩展来自动填充认证窗口

下面创建一个Chrome扩展插件,然后加载使用完成自动认证窗口

首先要实现Chrome扩展,你需要创建一个manifest.json文件,用来描述扩展的基本信息和权限:

{
"manifest_version": 2,
"name": "uth_ext",
"version": "1.0",
"background": {
"scripts": ["background.js"]
  },
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>"  ]
}

然后,你需要创建一个background.js文件,用来监听浏览器的请求,并在遇到认证窗口时自动填充用户名和密码

chrome.webRequest.onAuthRequired.addListener(
function(details, callback) {
// Replace with your own username and passwordvarusername='user';
varpassword='pass';
callback({authCredentials: {username: username, password: password}});
  },
  {urls: ["<all_urls>"]},
  ['blocking']
);

最后,你需要将这两个文件打包成一个crx文件,并在Chrome浏览器中安装

下面使用代码实现

usingOpenQA.Selenium;
usingOpenQA.Selenium.Chrome;
classProgram{
staticvoidMain(string[] args)
    {
ChromeOptionsoptions=newChromeOptions();
// 设置代理服务器地址、端口、用户名和密码options.AddArgument("--proxy-server=www.16yun.cn:31111");
options.AddArgument("--proxy-username=16ip");
options.AddArgument("--proxy-password=16ps");
// 启用无头模式options.AddArgument("--headless");
// 加载Chrome扩展,用于自动填充认证窗口options.AddExtension("auth_ext.crx");
// 创建ChromeDriver实例IWebDriverdriver=newChromeDriver(options);
// 访问需要认证的网页driver.Navigate().GoToUrl("https://www.amazon.com/");
// 等待认证窗口出现并自动填充WebDriverWaitwait=newWebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.AlertIsPresent());
IAlertalert=driver.SwitchTo().Alert();
alert.SetAuthenticationCredentials("username", "password");
alert.Accept();
// 关闭浏览器driver.Quit();
    }
}

上面的代码通过加载Chrome扩展,实现认证窗口的自动填充,从而自动使用代理用户名和密码进行访问。

相关文章
|
6月前
|
Web App开发 Java 测试技术
selenium怎么使用代理IP
selenium怎么使用代理IP
157 0
|
3月前
|
安全 C# 数据安全/隐私保护
后端使用C#正则校验密码
这篇文章提供了一个使用C#编写的密码校验示例,通过正则表达式匹配8-16位的密码,确保密码中至少包含一个大写字母、一个小写字母、一个数字以及一个特殊字符。
23 1
后端使用C#正则校验密码
|
4月前
|
数据采集 安全 Java
Java Selenium WebDriver:代理设置与图像捕获
Java Selenium WebDriver:代理设置与图像捕获
|
6月前
|
算法 安全 C#
C#版开源免费的Bouncy Castle密码库
C#版开源免费的Bouncy Castle密码库
|
6月前
|
Web App开发 数据可视化 测试技术
Selenium Headless模式:无头浏览器的使用与优势
Selenium Headless模式是无界面的自动化测试方式,适用于Chrome和Firefox等浏览器,提供更快的速度、更高的隐秘性和资源节省。在Python中启用该模式,需导入Options并设置相关参数。示例代码展示了如何在无头模式下访问网站、执行点击和输入操作。这种模式提升了测试效率和稳定性,尤其适合大规模测试和CI环境。
516 1
|
数据采集 JavaScript 前端开发
动态内容抓取指南:使用Scrapy-Selenium和代理实现滚动抓取
在传统的网络爬虫中,静态网页内容很容易抓取,但对于通过JavaScript加载的动态内容,通常需要借助浏览器进行模拟访问。Scrapy-Selenium是一款结合了Scrapy和Selenium功能的库,可以实现模拟浏览器行为,从而实现抓取动态内容的目的。
451 0
动态内容抓取指南:使用Scrapy-Selenium和代理实现滚动抓取
|
数据采集 JavaScript 前端开发
Selenium+代理爬取需要模拟用户交互的网站
Selenium+代理爬取需要模拟用户交互的网站
【原创】selenium配置代理(账密、隧道)
【原创】selenium配置代理(账密、隧道)
【原创】selenium配置代理(账密、隧道)
|
Web App开发 前端开发 测试技术
新手教程 | Python自动化测试Selenium+chrome连接HTTP代理(账密+白名单)
虽然 Selenium 主要用于网站的前端测试,但其核心是浏览器用户代理库。本次来说说,Python使用Selenium调用Chrome浏览器并通过HTTP代理进行自动化测试
|
API Python
python3使用selenium并加代理访问网页
python3使用selenium并加代理访问网页
271 1