OP 需要采集一个网站,该网站用了 CloudFlare ,之前 OP 采用构造 TLS 指纹,绕过了风控,然后爬虫也运行了几个月,一直没啥问题,但是最近发现 OP 的请求已经被精准的识别为爬虫了。
开始 OP 以为是光构造 TLS 指纹已经不行了( Chrome 已经不在固定 TLS ),想着是不是要加上 H2 指纹,然后就 H2 指纹也构造了,但是还是没用。
这个时候让 OP 疑惑的地方就出现了,就是使用 go (前面都是 Python )去试了一下,只构造了 TLS 指纹就直接过了。可以肯定的是 TLS 指纹和 H2 指纹构造的都是一样的,但是为什么 go 能过,Python 不能过?
CloudFlare 是通过什么地方,或者采用什么方案精准识别到前面( Python 写的)那一套是爬虫呢?
1
0o0O0o0O0o 2023-07-14 10:20:20 +08:00 via iPhone
如果真的控制好了变量,那就拿 wireshark 对比下
|
2
chiron688 2023-07-14 10:23:16 +08:00
不懂,一直都是用的这几个库
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 |
3
yingxiangyu 2023-07-14 10:43:09 +08:00 2
|
4
wuchujie 2023-07-14 11:14:42 +08:00
OP 是用 selenium 爬?
|
5
Masterlxj OP @0o0O0o0O0o 对比看了一下,相比 go ,是有一点不一样,不过不同的地方很少,就拓展有点差异
- supported_versions 少 0x0302,0x0301 - signature)algorithms 少 0x0603, 0x0203, 0x0201 - padding 长度少一点 目前不确定是不是这 3 个的原因,试试看 |
6
qq78660651 2023-07-14 11:25:46 +08:00 1
@chiron688 from selenium.webdriver.chrome.options import Options
这样引入编辑器会有波浪线提示,看着不难受么, |
7
Masterlxj OP @yingxiangyu 不是,凡是基于 openssl 的请求包都只能构造加密组件来伪造 tls 指纹。自己实现的请求过程,加密套件,拓展都是可以修改的,所以不存在这个问题
|
9
timnottom 2023-07-14 11:31:27 +08:00
|
10
Masterlxj OP @timnottom go 的话,这一块支持的比较多,底层组件很多都支持。我用的 cycletls ,git 找一下就有
|
11
2333wz 2023-07-14 11:38:46 +08:00
@qq78660651 要怎么做正确呢?我也有这个问题,纠结了好久;好像问题也只有波浪线
|
12
qq78660651 2023-07-14 11:50:13 +08:00 1
@2333wz
from selenium.webdriver import ChromeOptions 好像和 python 解释器版本也有关系,家里 3.11 会有提示,3.10 及以下好像没提示的 大概率是 selenium 库有更新,这种写法是兼容以前的项目吧, 毕竟代码和人能有一个能跑就没事 |
13
sunshijie 2023-07-14 13:25:36 +08:00
https://github.com/yifeikong/curl_cffi
用这个包请求试试 或者提供一下网站,github 上有很多 chrome tls 指纹的包,可以再参考胰腺癌 |
14
HunSiKing 2023-07-14 13:38:51 +08:00
所以可以分享你的的基本 go 代码
|
15
Masoud2023 2023-07-14 13:41:39 +08:00
为什么不用 headless chrome 方案?
|
16
lopssh 2023-07-14 13:53:44 +08:00
不会有什么时序上面的检测吧。。
|
18
yingdashi 2023-07-14 15:57:36 +08:00
cf 不是用机器学习检测的吗
|
19
alukongfu 2023-07-14 17:02:18 +08:00
|
22
Masterlxj OP @alukongfu 首先感谢大佬的回复,不过这个不是我想要的,文中所提到的方法,对于强检测的网站是没用的,python 在这一块有很大劣势(是的,python 在爬虫方面相比其他语言竟然有劣势)。所有基于 openssl 的请求库都没法完全构造 tls ,更别说一向好用的 requests 连 h2 都不支持
|
23
lanlanye 2023-07-15 01:27:50 +08:00
盲猜一手 ChatGPT ,好像有一些 Chrome 插件可以实现长期驻留在页面上并模拟出活跃状态,你可以找找看他们怎么实现的。
|
24
chiron688 2023-07-16 10:52:13 +08:00
@qq78660651 你没有下 chrome 的 webdrive 吧,下了放在指定文件夹里面就会消除波浪线了
也有可能是我用的 vscode |