百度反扒上了 TLS 指纹反爬虫: python爬虫 - 猿人学第十九题突破ja3指纹验证

我们可以使用 curl_cffi 轻松无脑突破 TLS 指纹反爬虫:curl_cffi: 支持原生模拟浏览器 TLS/JA3 指纹的 Python 库

但是我在使用 curl_cffi + nameko 的时候,发现请求代理等 http 操作的延时很恐怖且越来越恐怖

我直接怀疑就是 curl_cffi 和 eventlet 的兼容性有问题,为什么呢?因为我之前看到过文章说 eventlet 和 grpc 不兼容,因为 grpc 使用的是多线程库不是 python 内置的多线程,所以 eventlet 的猴子补丁能给 python 内置的多线程打补丁,但是不认识 grpc 的多线程

参考: https://github.com/grpc/grpc/issues/15923

curl_cffi 估计也是一样,因为 curl_cffi 是包装了 curl,curl 的多线程估计是自己实现的。所以当 curl_cffi 和 nameko/eventlet 一样使用的时候,一旦 curl_cffi 使用了多线程,nameko/eventlet 就无法获取进程的控制权了,其下的协程就都被挂起了

那么怎么解决呢?参考:https://curl-cffi.readthedocs.io/en/latest/api/curl_cffi.requ...

图片.png

使用的时候,添加 thread='eventlet' 就好了

也可以参考:Can it be used with eventlet/gevent?

universe_king
3.4k 声望680 粉丝