当前位置: 首页 > news >正文

解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南

DALL·E 2023-10-11 15.49.24.png

引言

在使用Selenium和C#进行网页抓取时,遇到代理服务器的身份验证弹出窗口是一个常见的问题。这不仅会中断自动化流程,还会导致抓取任务失败。本文将提供一个实战指南,帮助开发者解决这个问题,并介绍如何在代码中设置代理IP、UserAgent和Cookies。

正文

1. 环境准备

在开始之前,请确保已经安装了以下工具和库:

  • Visual Studio(或任何C#开发环境)
  • Selenium WebDriver
  • Firefox浏览器
  • GeckoDriver

2. 设置代理IP和身份验证

下面示例使用亿牛云爬虫代理提供的代理IP、端口、用户名和密码来进行身份验证。

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;class Program
{static void Main(){// 代理信息 亿牛云爬虫代理标准版 string proxyHost = "www.16yun.cn";//代理IP地址int proxyPort = 端口号;string proxyUsername = "用户名";string proxyPassword = "密码";// Firefox配置FirefoxOptions options = new FirefoxOptions();// 设置代理FirefoxProfile profile = new FirefoxProfile();profile.SetPreference("network.proxy.type", 1);profile.SetPreference("network.proxy.http", proxyHost);profile.SetPreference("network.proxy.http_port", proxyPort);profile.SetPreference("network.proxy.ssl", proxyHost);profile.SetPreference("network.proxy.ssl_port", proxyPort);// 设置UserAgentprofile.SetPreference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");// 设置自动登录代理身份验证profile.SetPreference("network.proxy.autoconfig_url.include_path", false);profile.SetPreference("signon.autologin.proxy", true);profile.SetPreference("network.automatic-ntlm-auth.allow-proxies", true);profile.SetPreference("network.proxy.autoconfig_url", $"http://{proxyUsername}:{proxyPassword}@{proxyHost}:{proxyPort}");options.Profile = profile;options.AcceptInsecureCertificates = true;// 启动浏览器IWebDriver driver = new FirefoxDriver(options);// 设置Cookiesdriver.Manage().Cookies.AddCookie(new Cookie("cookie_name", "cookie_value"));try{driver.Navigate().GoToUrl("https://movie.douban.com/");// 等待页面加载WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));wait.Until(d => d.FindElement(By.TagName("body")));Console.WriteLine("页面加载成功");}catch (Exception e){Console.WriteLine($"遇到错误: {e.Message}");}finally{driver.Quit();}}
}

实例

上述代码展示了如何使用C#和Selenium设置Firefox浏览器的代理身份验证,并包括了UserAgent和Cookies的设置。在实际使用时,请将代理信息替换为亿牛云爬虫代理提供的真实数据。

代码说明

  1. 代理设置:通过FirefoxProfile对象设置代理服务器的地址和端口,并包含身份验证信息。
  2. UserAgent设置:通过general.useragent.override参数自定义UserAgent。
  3. 自动登录代理:通过相关配置项自动处理代理身份验证弹出窗口。
  4. 设置Cookies:使用driver.Manage().Cookies.AddCookie方法设置需要的Cookies。

结论

通过本文介绍的方法,您可以轻松地解决Firefox浏览器在使用代理时的身份验证弹出窗口问题。结合C#和Selenium的强大功能,您可以实现更加稳定和高效的网页抓取任务。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 量化金融人都在看哪些顶刊
  • C#--DirectShowLib 关闭自动白平衡和自动曝光时间
  • MATLAB基础操作(二)
  • Vue Router 详解:让你的单页面应用(SPA)畅行无阻
  • Flink 实时数仓(五)【DWD 层搭建(三)交易域事实表】
  • 数据结构与算法 - 优先级队列、阻塞队列
  • 我对于内存相关的三个问题的理解和总结——内存泄漏、内存溢出、野指针
  • 宏景eHR /ajax/ajaxService SQL注入漏洞复现
  • 【时时三省】unity test 测试框架 使用 code blocks 移植
  • 如何解决C#字典的线程安全问题
  • 40.组合综合Ⅱ
  • 【JavaEE精炼宝库】 网络编程套接字——UDP业务逻辑 | TCP流套接字编程及业务逻辑实现
  • 沉浸式企业VR展厅,重塑企业形象展示方式!
  • 程序员进阶架构知识体系、开发运维工具使用、Java体系知识扩展、前后端分离流程详解、设计模式开发实例汇总专栏分享
  • ComfyUI: 报EP Error错误(onnxruntime)
  • Android 架构优化~MVP 架构改造
  • Android单元测试 - 几个重要问题
  • Android组件 - 收藏集 - 掘金
  • Koa2 之文件上传下载
  • Logstash 参考指南(目录)
  • MySQL用户中的%到底包不包括localhost?
  • Netty源码解析1-Buffer
  • 搞机器学习要哪些技能
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 一、python与pycharm的安装
  • 因为阿里,他们成了“杭漂”
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 仓管云——企业云erp功能有哪些?
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • $forceUpdate()函数
  • (13)DroneCAN 适配器节点(一)
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (函数)颠倒字符串顺序(C语言)
  • (七)理解angular中的module和injector,即依赖注入
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (转)LINQ之路
  • .Net Redis的秒杀Dome和异步执行
  • .NetCore 如何动态路由
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @antv/g6 业务场景:流程图
  • @Autowired注解的实现原理
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @ModelAttribute 注解
  • @NotNull、@NotEmpty 和 @NotBlank 区别
  • @取消转义