使用Cefsharp + WebDriver C# 开发遇到网站检测处理方式

C# 实现支付宝自动输入密码CefSharp+Selenium(二) 上一次写的支付宝自动输入密码,没杀毒软件问题,但是360启动的话,直接就拦截了,应该用的是进程注入的原理,所以很容易被拦截,效果不是很好, 于是我又进行了第二次改进,这次不用那个插件了,换了原生的Selenium, 废话不多说(时间很紧,没时间扯犊子。哈哈) nuget安装 Selenium.WebDriver 第一步 开启cefsharp的远程调试端口 settings.RemoteDebuggingPort = 12222; var settings = new ... 阅读详情

在使用WebDriver时,总是会遇到官方的检测,官方时不允许这样做的,那么如何规避掉呢

我使用的Cefsharp的版本时79.0 ,那么在处理的时候需要添加这样一句话

string script = "if(navigator.webdriver){ Object.defineProperty(navigator, 'webdriver', {get: () => undefined});}";
                    chromiumWebBrowser.ExecuteScriptAsync(script);

这个我以为在程序加载完成之后进行处理,后来发现并不是的,因为在加载完成之后,官方已经知道了你的处理

那么,我们就需要在他知道之前进行处理掉,所以我尝试着在这个函数中进行处理

 protected override void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
        

想必在使用cefsharp79.0的小伙伴们都知道这个函数,之前的老版本跟现在的不一样,建议使用官方的例子进行研究下

 

在这个函数中写入这段话,就可以处理掉官方的检测了。

 

后来又出现一个问题,这个写过了之后,第一次的确时成功的“逃脱”了官方的检测,但是在我使用webdriver进行浏览器导向的时候,又出现了检测,这怎么办

而且这个问题还是断断续续的,有时会出现,有时不出现,让我很难处理,程序员最不喜欢的就是断断续续的Bug了,你说呢

那么在后来怎么处理掉了呢,我是这样处理,第一次直接让浏览器导航到你需要的问题,然后登录之后再进行处理其他的,当然再处理其他的时候,也要防止官方对你的检测,他们会再每个页面对WebDriver进行检测,所以要再改网站的每一个访问需要加上躲避代码呢。

 

下面说下修改Post的数据问题

  首先需要知道对应的接口,然后知道相应的参数,比如图片一般是二进制数据,需要进行转换。

 数据的格式问题,是Json还是简单的自负床

 数据类型:是UTF-8还是form-data

弄清楚之后,再进行post,修改数据的需要写在这个函数里面

  protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
       

在这个里面进行修改数据,那么怎么接收数据呢

这个函数里面进行接收数据

 protected override void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
        

好,知道在哪里处理数据了,本来的我以为这样一切都可以的时候,问题还是出现了,唉,果然不是我想象中的那么简单啊,问题总是提前一步

 

我在处理数据的那个函数中有这样一段话,你看看你们有没有

                    if (request.Method == "POST")
                    {
                        using (var postData = request.PostData)
                        {
                            if (postData != null)
                            {
                                var elements1 = request.PostData.Elements;
                                var charSet1 = request.GetCharSet();
                                foreach (var element in elements1)
                                {
                                    if (element.Type == PostDataElementType.Bytes)
                                    {
                                        string myData = element.GetBody(charSet1);
                                        Console.WriteLine(request.Url + "===============" + myData);
                                    }
                                }
                            }
                        }
                    }

这段代码是进行获取数据使用的,想必大家都知道,然后,后面又写了对应的url的数据获取,然后理所应当的进行修改数据

一切就绪,竟然提示数据为空,真是奇怪了,怎么都不可能为空的(妈蛋的,都是奇葩的问题)

我使用调试,打断点发现,数据竟然是真的为空了,于是在页面中找逻辑,看看到底是哪里出现了错误,

 

最后,感觉没有错误,在这个输出函数的时候是可以进行输出,在我修改的url的if语句中竟然没有了,于是我想了想,会不会这个东西只能使用一次呢。

于是进行修改代码,前面不在进行获取数据,只在相对应的url的if语句中进行获取,代码就是这样了

if (request.Url == "https://www.baidu.com")
{
    if (request.Method == "POST")
                    {
                        using (var postData = request.PostData)
                        {
                            if (postData != null)
                            {
                                var elements1 = request.PostData.Elements;
                                var charSet1 = request.GetCharSet();
                                foreach (var element in elements1)
                                {
                                    if (element.Type == PostDataElementType.Bytes)
                                    {
                                        string myData = element.GetBody(charSet1);
                                        Console.WriteLine(request.Url + "===============" + myData);
                                    }
                                }
                            }
                        }
                    }
}

惊喜的时刻终于来了,成功了!!!,真是恶心,搞不懂为什么是这样的。

 

 

还有一些问题,给大家补充一下,当你接获到url的时候,需要给他添加数据的时候,可以这样使用

 request.InitializePostData();
 request.PostData.AddData(mypostdata, Encoding.UTF8);

这样就可以了,文章写的都是经验,谈的都是过往。

 

这就是其中我遇到的问题,以及解决的办法,希望能帮助你们,喜欢的点个赞吧

 

切记,获取内容必须在相对应的url中进行获取,不然是没有办法进行修改数据的呢。上货软件已经完成了,不容易,后面会把我遇到的其他问题给记录下来,给各位网友提供下帮助。

 

官方的例子的网站我也给忘了,你们自己找下把!!!想要的可以留言,我帮你们找找。

cefsharp修改浏览器指纹笔记 在客户端的 JavaScript 中,可以使用 navigator.userAgent 属性获取浏览器的 User-Agent,从而进行 User-Agent 检测。这样,在之后的代码中调用 Date() 方法时,将会返回我们所创建的新的 Date 对象,从而实现了修改浏览器时间的效果。这样,当使用 ChromiumWebBrowser 访问网页时,CefSharp 会发送一个虚假的 User-Agent,从而欺骗客户端的 User-Agent 检测。 阅读详情

相关推荐

WinForm程序中webBrowser使用谷歌内核

在WinForm程序中,webBrowser显示页面使用谷歌内核。避免了网页在WinForm中显示兼容性问题。

C# winform使用cefsharp

注意事项写在开头: 一)cef要求.Net FrameWork框架最少为4.5.2,所以咱们在创建工程的时候注意 二)cef不支持anycpu平台 第一步: 新建工程 第二步 添加cef nuget包 第三步:在搜索框输出"cef" ,出现如下结果:选择红框内包下载 第四步:在窗体load方法内部写入代码 priv...

weixin_30690833的博客 913

C# cefsharp 多账号同时登陆,设置cookie隔离,修改部分浏览器指纹

C# cefsharp 多账号同时登陆,设置cookie隔离,修改部分浏览器指纹,源码仅供学习交流,后续可以加自动加购和不惧反爬虫等操作

【浏览器指纹】

详解浏览器指纹 - 简书

u012632105的博客 395

NOIP2008年普及组初赛题目答案及解析

NOIP2008年初赛详细题解

城南蝈蝈 926

LM Studio Bionic:本地AI智能体从部署到实战完整指南

AI智能体作为能够自主规划、执行多步任务的人工智能系统,其核心原理在于结合大语言模型的推理能力与工具调用机制。通过状态保持和任务分解算法,智能体实现了从单次问答到持续协作的技术跃迁。在工程实践中,这种架构显著降低了复杂任务自动化的门槛,特别适用于数据敏感场景和定制化需求。以Tesla V100等专业硬件为例,本地部署能充分发挥其大显存优势,支持更高精度的模型量化格式。在实际应用层面,智能体可无缝集成到代码审查、文档生成等开发工作流中,而LM Studio Bionic通过统一界面整合了模型服务、任务规划器等

weixin_29053695的博客 653

CEF桌面应用的自动化

开发跨平台桌面软件,目前比较流行的框架有CEF,是基于Chromium浏览器内核的。 这样的PC应用,同样可以使用Selenium进行自动化测试。 但是,selenium,是怎么启动浏览器的,大家,就需要去了解下webdriver原理。知道怎么用webdriver去操控浏览器,就知道了,怎么去操控桌面软件。 那在WebDriver脚本运行的时候,它们之间是如何通信的呢?为什么同一个browser driver即可以处理java语言的脚本,也可以处理python语言的脚本呢?让我们来看一下,一条Se

尘埃的博客 2968

【无标题】IP804A参考资料和管脚作用图

3.3V内置led控制内置EEPROM接口,用于哑应用ip804a,可集成为4X N端口PSE稳压器内置支持外部设备。多个系统和IC总线用于从每个IP804A收集PD电源状态,以支持全局电源管理。多个ip804a可以构建一个具有成本效益的PHY级PSE系统以支持PD分类和电源管理,而无需主机。基于LLDP(IEEE标准8023AT-2009的一部分),可以实时维护PSE和PD之间的动态电源管理,以提高电源效率。IP804A是一款用于POE(以太网供电)系统的4端口PSE(电源设备)控制器IC。

2301_78055735的博客 1059

C# CefSharp 可监听请求等

原地址:https://blog.youkuaiyun.com/jinxiu0406/article/details/80365140 bug1:在抓取js文件的时候,有时候数据未获取全,文本被截断了。在IResponseFilter.Filter中直接保存下载的js没有问题,在OnResourceLoadComplete这个事件中保存,有时会出去下载的js不全。 转载于:https://www...

weixin_33958585的博客 2220

QT5.14.2离线安装包保姆级教程:断网、选组件、避坑全记录

本文详细介绍了QT5.14.2离线安装包的完整流程,特别针对Windows平台开发者提供断网安装、组件选择及避坑指南。作为QT5系列中最后一个免费离线版本,5.14.2具有免注册、全组件离线安装等独特优势,是开源开发者的理想选择。文章涵盖从环境准备到安装后配置的全方位指导,帮助开发者高效完成安装并避免常见问题。

weixin_30924087的博客 578

PCL 将对象模板与点云对齐【2025最新版】

PCL模版匹配算法的使用案例,博客长期更新,本文最近更新时间为:2025年1月18日。

点云侠的博客 5378

cefsharp获取ajax返回值,使用CEfSharp之旅(6)攔截網絡請求 截取response返回

主要是繼承實現 Cefsharp的IRquestHandler對象,廢話不多說上代碼:public class request : IRequestHandler{public event Action msg;public event Action msg2;public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser b...

weixin_39611546的博客 1546

机器人中的数值优化(十三)——QP二次规划

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 2793

Cefsharp开发中遇到的问题

证书不安全时,默认抛出了异常,只需要在request中对返回值进行重写,处理异常并返回true即可。原因:CefSharp在遇到不安全证书的网址,如:不安全的https等,默认不显示,----ChromiumWebBrowser必须展示了才会触发加载完成事件。----cefsharp 初始化错误。其实是CefSharp内核中在。----发送HTTP请求。

dong123ohyes的专栏 2007

【RT-DETR涨点改进】损失函数改进篇 | RT-DETR引入SlideLoss损失函数,适合目标检测中面临的尺度变化、遮挡以及难易样本不平衡等复杂场景下的检测任务,含详细使用步骤

本文提出在RT-DETR目标检测模型中引入SlideLoss损失函数,以解决尺度变化、遮挡和难易样本不平衡等问题。SlideLoss通过自适应阈值划分正负样本,并对难样本赋予更高权重,使模型更关注分类边界样本。文章详细展示了SlideLoss的核心代码实现,并逐步指导如何在RT-DETR框架中集成该损失函数。实验表明,该方法能有效提升模型性能,特别适用于复杂场景下的目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 264

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP

直接上代码: varsettings=newCefSettings(); settings.CachePath="cache"; settings.CefCommandLineArgs.Add("proxy-server",ProxyAddress); Cef.Initialize(settings);

个人的工作随笔和日记,主要作为一个记录风向平台 6150

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

cefsharp(基于chrome浏览器的web控件)

修改项目 AnyCPU => X86或者X64 nuget安装cefsharp 搜索cefsharp安装 关闭项目重启 重启项目后依赖项可见cefsharp

daoer_sofu的专栏 1125

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

CefSharp禁止弹出新窗体,在同一窗口打开链接,或者在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接

说明:在同一窗口打开链接,只要稍加改造就可以实现,这里实现的是在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接 github和bitbucket上相关问题: 1、WPF empty POST data when using custom popup https://github.com/cefsharp/CefSharp/issue...

gman344的博客 4756

NET WinForm 通过CefSharp 96.0.170嵌入Google浏览器并与网页JS交互

NET WinForm 通过CefSharp 96.0.170嵌入Google浏览器并与网页JS交互

1883

selenium被检测了怎么办?

随着反扒技术的不断提高,selenium防被检测的方式越来越难。特别是一些国外网站,谷歌公司退出的人机检测机制更是让做爬虫的童鞋们烦恼不已。请出我们的神器chromium,无需自行下载chromedrvier, 也不用烦恼驱动版本不对应chrome版本而烦恼。最重要的是它可以很好的避开检测。包括谷歌公司自己的人机检测机制(不是说谷歌人机检测不会出现,而是出现的概率如同chrome本身)。 由于Selenium具有这些严重的缺点。pyperteer成为了爬虫界的又一新星。相比于selenium具有异步加载、速

qq_42709514的博客 4276

爬虫seleninm防检测

seleninm防检测 你好! 在爬虫中遇到selenium进不去页面的情况吗,我来教你解决,你只是缺少这几行代码!!! from selenium.webdriver import ChromeOptions option = ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automat...

weixin_45499040的博客 470

cefsharp设置忽略证书访问网址

最近使用cefsharp作为谷歌内核。使用的时候出现了一个问题。访问某些网址的时候是空白的。调试也没有任何报错。 最后在ie浏览器上面访问发现会出现不安全的证书。要点下继续浏览才能访问该网站。于是猜测是证书问题导致的。使用一下代码设置cefsharp初始化参数。问题解决 setting.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requ...

w_david的博客 4029

22.6.20日报:修复指纹浏览器的几个bug

指纹浏览器源码

weolar的专栏 944

Cefsharp抓取拼多多每日关键词

最近业余时间都在学习Cefsharp实现本地客户端,发现Cefsharp可以很方便的爬取一些网站的信息,于是就一些爬取过程做一下记录。拼多多商品搜索的链接是:拼多多,我们在CefSharp发起请求时加上log打印相关的请求信息,经过分析log,发现这条有关键字的信息是在一次MimeType为json的HTTP资源请求。代码段和日志如下 使用我上传的资源下载器也可以加载到对应的json文件.使用CefSharp结合vue3实现简单URL资源下载器-C#文档类资源-优快云下载 获取关键

lightjia的博客 837

C# Cefsharp 获取cookie 和设置cookie

设置cookie var cook = Cef.GetGlobalCookieManager(); cook.SetCookieAsync(url, new CefSharp.Cookie { Domain = "", Name = "", Value = "", }); 读取cookie private void Browser_FrameLoadEnd(object..

Little_Code的博客 8193
上一篇: 使用Cefsharp,C#开发得电商上货软件中遇到得问题
下一篇: LayUi-前台使用省市区三联动代码
Little_Code
博客等级 码龄10年 62粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值