Go 怎么绕过Cloudflare 防护,避免抓取失败

通常情况下,我们爬取网站会设置agent 等相关参数,但是对于Cloudflare网站,除了这些以外还需要设置,tls指纹和和http2指纹。golang的net基础库没有对其进行支持,访问的时候还是会附带golang的特征,这时候我们就要保证golang 请求的特征和浏览器请求的特征一致。

这时候我们可以用第三方扩展,已经对tls做了支持。

https://github.com/imroc/req


package main

import (
    "github.com/imroc/req/v3"
)

func main() {
    req.DevMode() // Treat the package name as a Client, enable development mode
    req.MustGet("https://httpbin.org/uuid") // Treat the package name as a Request, send GET request.

    req.EnableForceHTTP1() // Force using HTTP/1.1
    req.MustGet("https://tls.peet.ws/api/all")
}


我们拿浏览器和脚本去请求https://tls.peet.ws/api/all 这个地址,查看请求的参数是否是一致的。

如果一致就标识模拟成功,另外就是请求cloudflare 需要不定时更换ip,不然即使请求成功还是会触发风控。


下面就是指纹相关信息



也可以参考这几个帖子

https://sxyz.blog/bypass-cloudflare-shield/

https://www.wuzk.ink/2024/01/16/2024/20240116/

https://blog.skyju.cc/post/tls-fingerprint-bypass-cloudflare/

评论

(= ̄ω ̄=)··· 暂无内容!

回复

邮箱