无法使用curl模拟此浏览器请求

cbwuti44  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(182)

我正在尝试从一个站点抓取产品(例如https://www.violetgrey.com/en-us/shopping/the-rich-cream-18105401)。虽然在浏览器上它加载正常,但当我复制站点的初始curl请求时,它给我拒绝访问。这都是在本地环境中完成的。到目前为止,在从浏览器开发工具复制curl请求之前,我有:
1.已禁用站点的JS
1.清除了我所有的缓存和cookie
1.已尝试不同的浏览器
不过,结果还是一样的--curl阻止了这个请求。当我的浏览器中出现了完全相同的请求时。有人能给我指出正确的方向吗?

ql3eal8s

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。
请求标头

GET /en-us/shopping/the-rich-cream-18105401 HTTP/2
Host: www.violetgrey.com
mozilla/5.0 (x11; netbsd amd64; rv:16.0) Gecko/20121102 Firefox/16.0
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
accept-language: en-US,en;q=0.5
accept-encoding: gzip, deflate, br
dnt: 1
alt-used: www.violetgrey.com
connection: keep-alive
upgrade-insecure-requests: 1
sec-fetch-dest: document
sec-fetch-mode: navigate
sec-fetch-site: cross-site
sec-fetch-user: ?1
te: trailers

回应信头:

HTTP/2 403 
date: Thu, 27 Oct 2022 23:56:19 GMT
content-type: text/plain; charset=UTF-8
content-length: 16
x-frame-options: SAMEORIGIN
referrer-policy: same-origin
cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
expires: Thu, 01 Jan 1970 00:00:01 GMT
server-timing: cf-q-config;dur=4.9999998736894e-06
vary: Accept-Encoding
server: cloudflare
cf-ray: 760f5e1ced6e8dcc-MIA
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400

响应正文:

error code: 1020

相关问题