开发了某个网站的第三方客户端,不知道是不是因为这件事,那个网站后来套了一层 CloudFlare ,一开始我直接用的 WebView ,让用户手动通过验证,然后取 cf 的 Cookie ,但是过了一段时间,这个方法就不行了。 当你在 WebView 里访问套了 CF 的网站,只有通过验证的那一次请求可以访问,后续的任何访问都需要再次验证,也就是说 Cookie 没有被缓存到本地,也拦截不到 Set-Cookie 的那一条响应。
于是想到,肯定是 CF 知道你用了 WebView ,于是我设置了 Chrome 同款 UA ,但是直接过不了验证。 给 WebView 设置的 UA 只作用于根请求,但是 CF 会通过 js 来发送请求,这个请求的 UA 是直接通过 navigator.userAgent 获取的,不受 WebView 设置影响,你也不能用 js 更改这个值。
而 WebView 默认的 UA ,打印出来一看,直接明牌写着 wv 两个字。
后来通过 Object.defineProperty 修改了 navigator.userAgent ,但还是不给设置 Cookie 。
有大佬知道怎么通过 WebView 获取到 CF 的 Cookie 吗?
1
codehz 221 天前
userAgent 不是你这么改的啊,请求发到服务器上就知道你 ua 了,你要在 webview 设置里去修改 ua
其次检测 webview 方法很多,ua 只是最基础的手段 |
3
willwon1 221 天前
逆向过 CLOUDFLARE CLOUDFLARE 并不知道你用了 WebView 只是你缓存有问题而已
|
4
mmdsun 221 天前
WebView 是自己写的还是用的什么框架的 WebView 比如腾讯 X5 WebView 框架?应该是缓存有 BUG 吧。
如果换了其他 WebView 还是被拦了,再找绕过 Cf 的方案。 去找几个逆向 OpenAI 的项目参考,Cf 绕过比较容易找到参考。 一般是 JA3 指纹修改 、 或者 undetected_chromedriver 这个项目,这两都能过 CF |
5
AnnaIsGod OP @willwon1 https://community.cloudflare.com/t/block-webview-access/54244
可能是网站站长设置的,因为只有 CF 的 Cookie 不设置,别的注册登录一类的 Cookie 完全正常......响应头直接就没有 Set-Cookie ,大概不是缓存问题 |
6
AnnaIsGod OP @mmdsun 一开始我也觉得可能是缓存 bug ,但别的 Cookie 都能正常设置。WebView 就是系统自带的,唯一的疑点是这个 WebView 是被国产系统定制化的,通过日志看到调用的是:/my_bigball/app/WebViewGoogleCN/WebViewGoogleCN.apk
现在准备试下腾讯的那个... |
7
rekulas 217 天前
不知道网站的拦截级别是多少,但是据我所知,cf 的主流拦截逻辑还是浏览器指纹,cookie 的拦截级别低于指纹
你可以找找指纹的 cf bypass 库, 说不定验证都不需要 直接就过了 |