DigitalOcean Ubuntu 22.10服务器curl请求Zara官网返回403问题求助
问题:DigitalOcean Droplet执行curl请求Zara网站返回403访问拒绝
环境信息
- 服务器:DigitalOcean Droplet
- 系统:Ubuntu 22.10
问题描述
在服务器上执行带完整请求头的curl命令访问https://www.zara.com/us/时返回403访问拒绝,但本地终端执行相同命令(无论是否使用VPN)均能正常成功,且测试3个不同Droplet结果一致。
错误信息
curl: (6) Could not resolve host: curl
<HTML><HEAD> <TITLE>Access Denied</TITLE> </HEAD><BODY> <H1>Access Denied</H1> You don't have permission to access "http://www.zara.com/tr/en/basic-heavy-weight-t-shirt-p00526411.html?" on this server.<P> Reference #18.d04f4317.1668510459.19433a7 </BODY></HTML>
使用的curl命令
curl 'https://www.zara.com/us/' \ -H 'authority: www.zara.com' \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9,he;q=0.8' \ -H 'cache-control: no-cache' \ -H 'cid: regional' \ -H 'pragma: no-cache' \ -H 'referer: https://www.zara.com/tr/en/basic-heavy-weight-t-shirt-p00526411.html?v1=224865182&v2=2113240' \ -H 'sec-ch-ua: "Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' \ --compressed
解决建议
验证IP是否被拉黑
Zara的反爬系统大概率标记了DigitalOcean的IP段。可以用代理IP在Droplet上重跑curl命令,或者把Droplet的公网IP放到本地代理里访问Zara,确认是否同样被拒。优化请求头
- 把
sec-ch-ua-platform: "macOS"改成"Linux",匹配服务器系统 - 替换referer为美国站点的链接,比如
https://www.zara.com/us/en/,避免跨区域referer触发拦截 - 删除
cid: regional这个自定义头,部分网站会拦截未知自定义字段
- 把
模拟真实浏览器行为
- 先请求首页获取cookie,再用cookie发起目标请求:
curl -c zara_cookies.txt 'https://www.zara.com/us/' curl -b zara_cookies.txt 'https://www.zara.com/us/' \ -H 'authority: www.zara.com' \ # 其他请求头... - 在命令前加
sleep 2,模拟用户浏览间隔,降低被识别为爬虫的概率
- 先请求首页获取cookie,再用cookie发起目标请求:
排查DNS问题
错误信息里的Could not resolve host: curl可能是DNS解析异常:- 执行
nslookup www.zara.com检查域名解析是否正常 - 修改
/etc/resolv.conf,添加nameserver 8.8.8.8或nameserver 1.1.1.1后重试
- 执行
内容的提问来源于stack exchange,提问作者Roni Jack Vituli
相关产品推荐
相关产品推荐

