当使用浏览器通过本地的 HTTP 代理去访问配置有或没有配置 Cloudflare CDN 的网站的时候,均能正确获得页面响应;
当使用 Postman 工具或使用 Node.js 编程通过本地的 HTTP 代理去获取没有配置 Cloudflare CDN 的网站的时候,也能正确获得页面响应;
当使用 Postman 工具或使用 Node.js 编程通过本地的 HTTP 代理去获取配置有 Cloudflare CDN 网站页面的时候,却总会得到错误:Error: Client network socket disconnected before secure TLS connection was established;
哪位大佬知道这其中的原因和解决的方法呢?
1
yujiang 2022-01-02 14:00:03 +08:00 via Android
这就是 cloudflare 的防御功能在起作用啊
|
4
hallDrawnel 2022-01-02 14:20:34 +08:00
防御你用脚本去爬网站
|
5
gxever OP @ch2 @hallDrawnel 我觉得更多是一个配置上面的错误?因为浏览器可以通过代理正常访问,如果正常浏览器通过代理能行,那么使用 headless 浏览器通过代理的爬虫代码似乎也能行?那就不能防御脚本爬网站了...
|
7
crystom 2022-01-02 14:59:55 +08:00
握手使用的 ssl 套件不同,cf 能判断你不是正常浏览器
|
8
kidonng 2022-01-02 15:03:49 +08:00 via Android 1
各种 client 都是有 TLS fingerprint 的,CF 有利用此判断请求是否来自真正的浏览器。
但无头浏览器的开销比光发请求的开销大多了,而且也有手段对付(比如验证码)。 |
9
ZeroClover 2022-01-02 15:09:40 +08:00 1
如果是大站,有可能开了 Bot Management ,这个包含对 TLS 指纹的验证,你的 TLS 指纹和声明的 User Agent 不一致就会被干。
|
10
gxever OP |