我使用的是axios和一个API (cowin https://apisetu.gov.in/public/marketplace/api/cowin/cowin-public-v2),它对web请求有很强的保护。当我在我的开发计算机(Windows)上得到错误403时,我只需要添加一个标题‘User’就可以解决这个问题。当我将它部署到heroku时,我仍然会得到相同的错误。
const { data } = await axios.get(url, {
headers: {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
},
})
发布于 2022-11-11 06:21:51
在标题中使用假的用户代理可以帮助解决这个问题,但是您可能需要考虑其他变量。
例如,如果您正在发出多个HTTP请求,您可能希望有多个假的用户代理,然后将每个请求的用户代理随机化。这可以帮助限制您的刮刀的变化被检测到。
如果这仍然不起作用,您可能需要考虑进一步优化您的头。除了使用随机用户代理发送HTTP请求之外,您还可以通过添加比“用户代理”更多的头来进一步模拟浏览器的请求头,然后确保所选择的用户代理与从其他标头发送的信息一致。您可以查看这里以获得更多信息。
在网站上,它不仅将提供有关如何与用户代理一致地优化您的标题的信息,而且还将提供更多的解决方案,以防上面提到的仍然不成功。
在我的情况下,我不得不绕过cloudflare。如果您将错误记录到终端,则可以确定这是否是您的情况,然后在"server“键下检查是否显示"cloudflare”。在这种情况下,您可以使用这文档进行进一步的帮助。
https://stackoverflow.com/questions/67702683
复制