Twitter Api Search无法通过代理工作

时间:2014-01-10 16:33:24

标签: php curl twitter

我对新的twitter api有一个奇怪的问题。我按照question的非常好的答案在twitter上创建了一个搜索,并使用了来自here的TwitterAPIExchange.php。

只要我从使用CURL的服务器直接调用它,一切正常。但在实时环境中,我必须使用具有基本身份验证的代理。

我所做的就是将代理身份验证添加到performRequest函数中:

if(defined('WP_PROXY_HOST') && defined('WP_PROXY_PORT') && defined('WP_PROXY_USERNAME') && defined('WP_PROXY_PASSWORD'))
{
  $options[CURLOPT_HTTPPROXYTUNNEL] = 1;
  $options[CURLOPT_PROXYAUTH] = CURLAUTH_BASIC;
  $options[CURLOPT_PROXY] = WP_PROXY_HOST . ':' . WP_PROXY_PORT;
  $options[CURLOPT_PROXYPORT] = WP_PROXY_PORT;
  $options[CURLOPT_PROXYUSERPWD] = WP_PROXY_USERNAME . ':' . WP_PROXY_PASSWORD;
}

没有代理,我得到一个JSON响应。但是我得到了代理:

  

建立HTTP / 1.1 200连接   HTTP / 1.1 400错误请求   content-type:application / json;字符集= utf-8的   日期:2013年12月20日星期五09:22:59 UTC   服务器:tfe   strict-transport-security:max-age = 631138519   内容长度:61   代理连接:保持活跃   连接:保持活力   Set-Cookie:guest_id = v1%3A138753137985809686;域= .twitter.com;路径= /; Expires = Sun,20-Dec-2015 09:22:59 UTC   年龄:0 {“errors”:[{“message”:“Bad Authentication data”,“code”:215}]}

我尝试使用Charles Proxy在我的本地环境中模拟代理,但它确实有效。

我假设代理要么没有发送身份验证标头,要么以某种方式更改数据。

任何有线索的人......

编辑: 使用HTTP API可以正常工作但HTTPS失败。我已经尝试过将CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST设置为FALSE,但是推特SSL是有效的,所以不推荐这样做

1 个答案:

答案 0 :(得分:0)

您的代理响应是否缓存,或代理响应中的日期是否旧,因为您在12月20日执行了API调用?

如果它被缓存,你的代理可能会收到来自实际无效请求的缓存回复吗?