Diffbot docs建议您设置自定义标头,包括Cookies
,我只需在标头中添加X-Forward
前缀。
例如,我执行以下操作
cookie='SportsDirect_AnonymousUserCurrency=CNY'
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/65.0.3325.181 Chrome/65.0.3325.181 Safari/537.36'
headers = {'X-Forward-User-Agent': user_agent,'X-Forward-Cookie': cookie}
然后我将我的客户请求发送到网址https://www.sportsdirect.com/adidas-ace-17-1-mens-fg-football-boots-203193?colcode=20319312,我可以在Wireshark中看到客户端正确传递了X-Forward
标题:
然而,目标网站仍然以美元回应,而非人民币。
这与简单的cURL形成鲜明对比:
curl 'https://www.sportsdirect.com/adidas-ace-17-1-mens-fg-football-boots-203193?colcode=20319312' -H 'Cookie: SportsDirect_AnonymousUserCurrency=CNY' --compressed | grep -A 5 pdpPrice
显示符合“SportsDirect_AnonymousUserCurrency”的价格。
但是,我最后使用diffbot对https://webhook.site发出请求,该请求会记录任何请求以及对其提供给您的特殊地址的标头。
很明显,Diffbot确实转发了我的标题,所以当cURL确实无法获得正确的货币时,这令人费解。答案 0 :(得分:1)
无法用你的卷曲重现,也不会这样。为了使其适用于这两种方法,您需要添加另一个cookie值,因为它们的末端有重定向。完整标题是:
ChosenSite=www; SportsDirect_AnonymousUserCurrency=CNY;