美文网首页
解决使用cefsharp时无法通过阿里1688网站滑块验证的问题

解决使用cefsharp时无法通过阿里1688网站滑块验证的问题

作者: 我自由吗 | 来源:发表于2021-03-09 21:07 被阅读0次

    今天接到用户反馈,1688网站弹出对话框后拉动滑块无法验证通过。

    测试了确实如此。

    打开Chrome发现它能正常验证通过,打开Firefox、Edge都可以,难道我用的cefsharp私生子?

    最开始认为最大的嫌疑是UserAgent,换了好多都不行,用fiddler查请求一模一样,结果就是验证不通过。

    然后怀疑是cefsharp的版本问题,因为网上有人说63是可以的,之后的都不行,太新了不支持。这个虽说没道理,因为最新版的Chrome是正常的,但还是从63一直试到88,都不行,这个因素排除。

    搞了一下午都想放弃了,但是看到不断有用户来反馈,想想还是要对用户负责任,继续攻坚,终于发现了一点蛛丝马迹:

    Chrome浏览器,只要我把浏览器窗口的最大化取消,变成正常窗口,那么验证滑块就无法通过,跟我的cefsharp一模一样;于是我又试了FireFox,结果也是一样,原来这个滑块认证需要判断窗口状态,太小的窗口它认为不是一个正常的用户,似乎有点道理,于是我把cefsharp的窗口也改成了最大化,结果大失所望,仍然还是无法验证通过。

    应该还有其他的影响。我打开了cefsharp的开发者模式,在日志中发现有个js文件中警告但显示是乱码,然后我通过浏览器打开这个js的网址,这个警告的意思是页面正在使用viewport的方式(大概意思),也就是说跟页面缩放有关。我记得Chrome是有页面缩放百分比控制功能的,验证会不会跟这个有关系呢?于是我尝试设置cefsharp的zoom level,发现设置为1时(也就是页面缩放为120%)+最大化的时候,滑块很容易验证通过。

    至于原理应该是里面有js代码来判定,不愿意查了,能解决问题就好。代码我只加了两处:

    一是窗口最大化,这个不写了了。

    二是cefsharp设置zoom level,在文档加载完比后:

    CWebBrowser.SetZoomLevel(1);

    这样做完以后,基本都能1次验证通过,最多2、3次就搞定了。

    感觉应该还有其他的思路,不是唯一解。

    -----------------------------------------------------------------

    2021.07.05更新  

    塞翁失马,焉知非福?阿里近期再次升级了风控,之前放大页面的方法也不管用了,难道就此终结了吗?没想到貌似把人逼到绝路的时候,恰恰有了枯木逢春的时机。

    相关文章

      网友评论

          本文标题:解决使用cefsharp时无法通过阿里1688网站滑块验证的问题

          本文链接:https://www.haomeiwen.com/subject/coyhgktx.html