想交流一个 CloudFlare 反爬问题

355 天前
 Masterlxj

OP 需要采集一个网站,该网站用了 CloudFlare ,之前 OP 采用构造 TLS 指纹,绕过了风控,然后爬虫也运行了几个月,一直没啥问题,但是最近发现 OP 的请求已经被精准的识别为爬虫了。

开始 OP 以为是光构造 TLS 指纹已经不行了( Chrome 已经不在固定 TLS ),想着是不是要加上 H2 指纹,然后就 H2 指纹也构造了,但是还是没用。

这个时候让 OP 疑惑的地方就出现了,就是使用 go (前面都是 Python )去试了一下,只构造了 TLS 指纹就直接过了。可以肯定的是 TLS 指纹和 H2 指纹构造的都是一样的,但是为什么 go 能过,Python 不能过?

OP 的疑问

CloudFlare 是通过什么地方,或者采用什么方案精准识别到前面( Python 写的)那一套是爬虫呢?

  1. OP 不是想问什么工具可以绕过,或者什么工具可以构造 TLS/H2 指纹
  2. 不是 IP 的问题,已经挂了海外住宅代理,同时 go 那一套是可以过的
  3. 不是想交流 JS 逆向
3413 次点击
所在节点    Python
24 条回复
0o0O0o0O0o
355 天前
如果真的控制好了变量,那就拿 wireshark 对比下
chiron688
355 天前
不懂,一直都是用的这几个库
import re
import logging
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
yingxiangyu
355 天前
wuchujie
354 天前
OP 是用 selenium 爬?
Masterlxj
354 天前
@0o0O0o0O0o 对比看了一下,相比 go ,是有一点不一样,不过不同的地方很少,就拓展有点差异
- supported_versions 少 0x0302,0x0301
- signature)algorithms 少 0x0603, 0x0203, 0x0201
- padding 长度少一点
目前不确定是不是这 3 个的原因,试试看
qq78660651
354 天前
@chiron688 from selenium.webdriver.chrome.options import Options
这样引入编辑器会有波浪线提示,看着不难受么,
Masterlxj
354 天前
@yingxiangyu 不是,凡是基于 openssl 的请求包都只能构造加密组件来伪造 tls 指纹。自己实现的请求过程,加密套件,拓展都是可以修改的,所以不存在这个问题
Masterlxj
354 天前
@wuchujie 不是
timnottom
354 天前
所以可以分享你的的基本 go 代码吗,对 go 构建指纹比较有兴趣
Masterlxj
354 天前
@timnottom go 的话,这一块支持的比较多,底层组件很多都支持。我用的 cycletls ,git 找一下就有
2333wz
354 天前
@qq78660651 要怎么做正确呢?我也有这个问题,纠结了好久;好像问题也只有波浪线
qq78660651
354 天前
@2333wz
from selenium.webdriver import ChromeOptions
好像和 python 解释器版本也有关系,家里 3.11 会有提示,3.10 及以下好像没提示的
大概率是 selenium 库有更新,这种写法是兼容以前的项目吧,
毕竟代码和人能有一个能跑就没事
sunshijie
354 天前
https://github.com/yifeikong/curl_cffi
用这个包请求试试 或者提供一下网站,github 上有很多 chrome tls 指纹的包,可以再参考胰腺癌
HunSiKing
354 天前
所以可以分享你的的基本 go 代码
Masoud2023
354 天前
为什么不用 headless chrome 方案?
lopssh
354 天前
不会有什么时序上面的检测吧。。
Masterlxj
354 天前
@lopssh 大佬指的时序是哪一方面?
yingdashi
354 天前
cf 不是用机器学习检测的吗
alukongfu
354 天前
alukongfu
354 天前
可以参考一下这个 @Masterlxj

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/956660

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX