curl返回HTTP 404但页面可访问的问题排查求助
问题分析与解决方法
以下是针对curl脚本返回404但Python requests返回200问题的排查方向和解决办法:
请求头差异
requests默认会发送符合浏览器规范的User-Agent等请求头,而curl默认的User-Agent是curl/[版本号],部分网站会根据请求头返回不同内容甚至404。给curl添加模拟浏览器的请求头即可:# 修改后的脚本,添加User-Agent参数 #!/bin/sh echo $(curl -sSLk -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" -w '%{http_code}' -o /dev/null "$1" 2> /dev/null)URL传递的shell解析问题
如果目标URL包含特殊字符(如&、空格),直接用$1传递会被shell拆分解析,导致请求的URL不完整。将脚本中的$1改为"$1",确保URL被完整传递。查看curl详细请求过程
去掉-s静默参数,查看curl的完整请求日志,确认是否存在重定向异常或中间步骤返回404:curl -SLk -w '%{http_code}' -o /dev/null https://something/login.htmlCookie或会话验证差异
若浏览器访问时依赖已保存的Cookie,可尝试将浏览器的Cookie复制到curl请求中测试:curl -sSLk -b "your_cookie_key=your_cookie_value" -w '%{http_code}' -o /dev/null https://something/login.html
内容的提问来源于stack exchange,提问作者watchdog
相关产品推荐
相关产品推荐

