【问题标题】:Sending cookies with Diffbot使用 Diffbot 发送 cookie
【发布时间】:2018-04-18 14:55:27
【问题描述】:

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}

然后我通过我的客户端向 URL 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 却获得了正确的货币。

【问题讨论】:

  • Diffbot 在美国使用服务器,因此您的 IP 可能是一个主要因素,这就是为什么您默认使用 CNY,而不是标头本身。尝试使用不带标题的 curl 时,网站是否返回美国或人民币?
  • 我的 IP 是英国。如果我 cURL 没有标题,我会得到 GBP。如果我 diffbot 没有标题,我会得到美元。对我来说,带有单个 SportsDirect_AnonymousUserCurrency 的 cURL 足以根据需要更改货币,但正如下面的答案所示,我需要 2 个 cookie 才能让 diffbot 更改货币。

标签: diffbot


【解决方案1】:

无法使用您的 curl 进行复制,也无法以这种方式工作。要使其与这两种方法一起使用,您需要添加另一个 cookie 值,因为它们的末端有重定向。完整的标题是:

ChosenSite=www; SportsDirect_AnonymousUserCurrency=CNY;

【讨论】:

  • 奇怪的是你没有复制 cURL,我只是再试一次,它对我来说可以很好地在像单一货币这样的货币之间进行转换。尽管如此,添加额外的 cookie,ChosenSite 确实会停止使用 diffbot 的重定向并给我所需的响应。谢谢!
猜你喜欢
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多