我正在尝试从一个站点抓取产品(例如https://www.violetgrey.com/en-us/shopping/the-rich-cream-18105401)。虽然在浏览器上它加载正常,但当我复制站点的初始curl请求时,它给我拒绝访问。这都是在本地环境中完成的。到目前为止,在从浏览器开发工具复制curl请求之前,我有:
1.已禁用站点的JS
1.清除了我所有的缓存和cookie
1.已尝试不同的浏览器
不过,结果还是一样的--curl阻止了这个请求。当我的浏览器中出现了完全相同的请求时。有人能给我指出正确的方向吗?
1条答案
按热度按时间ql3eal8s1#
如果您查看响应头,您可以看到它来自Cloudflare。
云耀斑是邪恶的。恕我直言。
HTTP状态为403.
HTTP/2 403
,表示禁止。正文为正文:
错误代码:1020
错误1020可以大致翻译成“带着你的卷发去别的地方吧,这里不需要你和你的卷发"。
Cloudflare配置文件和指纹浏览器。例如,它们会监控SSL/TLS握手,如果您的curl握手不像您的用户代理中的浏览器那样进行握手,它们会给予您一个403 Forbidden和错误代码1020。
你的请求没有到达violetgrey.com,他们甚至不知道你试过。
Cloudflare是政治性的,他们会阻止任何他们想阻止的流量。如果不允许你通过符合他们的最佳利益,他们就会阻止你。例如,Cloudflare阻止我访问美国专利和商标网站。不仅如此,他们还向YouTube和Google Play发送了3个XHR信标请求。我的Firefox阻止了这些请求。Cloudflare和Google关系密切。我不信任他们中的任何一个。
关于你的问题和可能的修复方法的文章并不缺乏。只要搜索“CloudFlare 403禁止1020错误”。也许不要使用谷歌来做搜索。
这里是我努力刮你的网址。我尝试了一些事情,如尝试各种用户代理。我尝试了wget。
请求标头
回应信头:
响应正文: