Python请求MarineTraffic接口出现403错误的解决方法咨询
解决MarineTraffic接口403错误的Python请求方案
核心原因
网站会通过请求头验证判断请求是否来自合法浏览器,直接用curl转的代码大概率缺失了关键头信息(比如User-Agent、Referer)或者有效的Cookie,导致被服务器拦截返回403。
具体解决步骤
1. 完整复制浏览器的请求头
打开Chrome网络面板,找到目标接口的请求,右键复制完整的请求头(包含Cookie、User-Agent、Referer、Accept等所有字段)。
2. 在Python requests中补全所有关键头
把复制的请求头整理成字典,传入requests.get的headers参数,同时确保Cookie是当前浏览器中有效的值(直接从浏览器复制即可)。
示例代码
import requests url = "https://www.marinetraffic.com/getData/get_data_json_4/z:3/X:1/Y:0/station:0" # 替换为你从浏览器复制的完整请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36", "Referer": "https://www.marinetraffic.com/", "Accept": "application/json, text/javascript, */*; q=0.01", "Cookie": "此处替换为浏览器中复制的有效Cookie字符串", "X-Requested-With": "XMLHttpRequest" } response = requests.get(url, headers=headers) print(response.status_code) print(response.json())
注意事项
- Cookie存在有效期,过一段时间后需要重新从浏览器复制新的Cookie。
- 避免频繁发送请求,防止触发网站反爬机制导致IP被封禁。
- 如果补全头后仍返回403,需检查请求参数是否包含动态生成的签名类内容,这类参数需要同步从浏览器请求中复制。
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

