基础认证与cookie-jar失效时如何访问需身份验证的URL
mynetdiary.com curl导出数据401错误解决方案
- 步骤1:先获取登录页的前置cookie和CSRF令牌
大部分站点的登录表单都包含动态生成的CSRF防护字段,直接提交固定表单参数会被拦截,先执行以下命令获取初始页面信息:
打开下载的login_page.html,提取登录表单内所有隐藏input的name和value,常见字段名包括curl -c cookies.txt -o login_page.html https://www.mynetdiary.com/login.docsrfToken、authenticity_token、requestId等。 - 步骤2:补全参数发送登录请求
登录请求需要补全上一步提取的所有隐藏字段,同时添加重定向跟随、浏览器UA、Referer头,避免站点校验拦截,参考命令如下:
注意:统一使用https协议请求,避免http和https跨协议导致cookie无法共享。curl -b cookies.txt -c cookies.txt -L \ --form username-or-email=你的账号 \ --form password=你的密码 \ --form 你提取的隐藏字段名1=对应值 \ --form 你提取的隐藏字段名2=对应值 \ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" \ -H "Referer: https://www.mynetdiary.com/login.do" \ https://www.mynetdiary.com/establishSession.do - 步骤3:请求导出接口时补充必要头信息
导出请求同样需要添加UA、Referer头,避免校验失败,参考命令如下:curl -b cookies.txt -L \ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" \ -H "Referer: https://www.mynetdiary.com/exportData.do" \ https://www.mynetdiary.com/exportData.do?year=2021 -v - 补充排查方案
如果上述操作仍返回401,打开浏览器开发者工具的网络面板,手动执行登录、导出操作,将抓到的请求头、表单参数和curl的参数完全对齐即可,重点校验是否有额外的自定义头、Cookie字段遗漏。
内容的提问来源于stack exchange,提问作者cfn
相关产品推荐
相关产品推荐

