一般情况下,需要彭博的引述。我在浏览器中发出此请求以获取报价,例如泰铢的报价。我找到了该 URL 并正在分析货币页面。
即使没有代理,一切都可以通过浏览器正常运行。我通过控制台看到该请求是通过 h2 协议发送的。我正在尝试重复它,我正在使用 python 2.7 请求 - 它不起作用,它返回到页面的重定向。此外,我还从浏览器网络选项卡中获取所有标头以及用户代理。
您可能是机器人的信息在哪里?
好的,我使用 php curl 7.4 - 它也不起作用,机器人...我使用 php 8.3 据我所知它有 h2 支持,我发出一个请求,哦奇迹它起作用了!并非总是如此,但有时它会确定它是一个机器人。如果我通过代理工作,那么大约 60-70% 的成功请求...
好的,我尝试使用支持 h2 的最新版本的控制台 curl - 但是......它不起作用。它不断地判断它是一个机器人,但这怎么可能呢?请帮我解释一下,告诉我彭博社如何识别机器人?那么如何才能规避这一限制呢?
curl 请求的示例(我将删除代理):
curl --user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4103.106 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7" -H "Cache-Control: no-cache" -H "Cookie: exp_pref=EUR; country_code=RU;" -H "Dnt: 1" -H "Pragma: no-cache" -H "Sec-Ch-Ua: "Chromium";v="5", "Not/A)Brand";v="24"" -H "Sec-Ch-Ua-Mobile: ?0" -H "Sec-Ch-Ua-Platform: "Windows"" -H "Sec-Fetch-Dest: document" -H "Sec-Fetch-Mode: navigate" -H "Sec-Fetch-Site: none" -H "Sec-Fetch-User: ?1" -H "Upgrade-Insecure-Requests: 1" "https://www.bloomberg.com/markets2/api/history/USDDZD:CUR/PX_LAST?timeframe=1_YEAR&period=daily&volumePeriod=daily" -v
我添加了 -v 开关来查看所有标头,php 和 curl 请求在它们使用的证书方面略有不同,可能是这样吗?
您是否尝试过先打开彭博社的网站?当我用浏览器访问那里时,它向我发送了一条消息,提示我的地址有可疑活动,并提供验证码。此后请求
curl
开始起作用:(查询字符串从 Chrome Dev Tools/网络复制)
Python-3.13 中也是一样
结论