和浏览器一样的header但是用脚本get和post就会被cloudflare拦截怎么办?
有个网站我想弄个签到脚本,还有其他功能的脚本.经过我测试我发现了一系列很奇怪的现象:
1.在进行签到的时候,使用的是get.浏览器打开签到页面完全正常,不会出现cloudlfare拦截的页面.
2.把浏览器的访问记录保存为har文件并使用签到工具打开,会触发cloudflare的拦截.(里面包括了完整的浏览器所有的headers,完全一模一样的)
3.然后我调节har文件的顺序,把里面的headers的各个项目顺序调整成了和浏览器里面按f12看到的一样的顺序.就是har里面是cookie在最后面,但是f12看到的是user-agent在最后面.我调成浏览器f12里面user-agent在最后面使用签到工具也能成功签到不会被拦截了
4.然后我使用抓包工具看了一下,发现浏览器真实提交的数据和f12里面的顺序不一样.是cookie在最后面的.也就是说har里面那个被cloudflare拦截的headers顺序才是浏览器真实的headers顺序?但是为啥浏览器不会被拦截但是签到工具会被拦截呢?为啥改了顺序以后反而又不会被拦截了呢?(我知道har里面多了几个冒号开头的东西.我把那些东西删掉也一样会被拦截的)
5.然后我需要post一些数据.post的是一个表单和一个文件.我用的是request(files=xxx,data=xxx) session1.headers.clear()
session1.headers.update(headers)这样的形式.我以前在其他网站这样子post是没有问题的.但是在这个有cloudflare的网站总是被拦截.
然后最神奇的事情发生了:我在post的时候如果直接运行python那么就会提示403.但是我在post的时候打开了fiddler,那就可以正常返回结果了.也就是说fiddler自动帮我修复了post里面错误的信息?但是我哪里有错误?为啥我开着fiddler post就能成功,关掉fiddler去post就会失败?
然后fiddler我也不知道怎么设置,我用fiddler5的时候chrome老是提示证书不安全然后打不开网页.我添加了系统信任证书了还是提示我证书不安全.安卓模拟器雷电3.0也是.导入证书之后老是提示不安全.我无论在电脑还是安卓模拟器都信任证书了,但是就是一直给我提示不安全,这个又怎么解决啊?
我在post的时候如果直接运行python那么就会提示403.但是我在post的时候打开了fiddler,那就可以正常返回结果了这个是不是因为你Python里设置了fiddler的监听地址和端口,不开fiddler的情况下,Python是无法连接到指定的地址和端口。 你这句[但是我在post的时候打开了fiddler,那就可以正常返回结果了]就很明显了。网站校验了ja3,你打开fd的时候,是用fd发出的ja3,不打开的时候是python的ja3 Python里设置了fiddler的监听地址和端口,不开fiddler的情况下,Python是无法连接到指定的地址和端口。 绕过cloudflare 5s 墙
1.
pip install cloudscraper
2.
import cloudscraper
scraper = cloudscraper.create_scraper()
print(scraper.get("https://www.xxxx.com").text)
狒狒大魔王 发表于 2022-6-17 08:46
绕过cloudflare 5s 墙
1.
大部分没有用,只能用于极少部分ja3检测不严格的 漁滒 发表于 2022-6-17 09:25
大部分没有用,只能用于极少部分ja3检测不严格的
渔佬,那像一些文章写的,修改python源码的有用吗,类似这篇文章
https://blog.51cto.com/u_15023263/3790959 关注一下,看看有没有比较好的解决方案 本帖最后由 CDCBB 于 2022-6-17 10:18 编辑
可能尝试以下两种方案,一、模拟正常浏览器user-agent,二、调低请求频率 刘涛 发表于 2022-6-17 09:32
渔佬,那像一些文章写的,修改python源码的有用吗,类似这篇文章
https://blog.51cto.com/u_15023263/37 ...
对于一些不严格的就有用。cloudscraper库和你这个文章一样,都是只修改了请求头和TLS中的加密套件
页:
[1]
2