推特 API 搜索无法通过代理工作



我对新的twitter api有一个奇怪的问题。我按照这个问题的好答案在twitter中创建了一个搜索,并从这里使用了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错误请求内容类型:application/json;charset=utf-8日期:2013年12月20日星期五09:22:59 UTC服务器:tfe严格的运输安全:最大年龄=631138519内容长度:61代理连接:保持活动连接:保持活动设置Cookie:guest_id=v1%3A1387531798809686;域名=.twitter.com;路径=/;到期时间=2015年12月20日星期日09:22:59 UTC年龄:0{"错误":〔{"消息":"错误的身份验证数据","代码":215}〕}

我试着用Charles proxy在本地环境中模拟一个代理,结果成功了。

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

任何有线索的人。。。。

编辑:使用HTTP API有效,但HTTPS失败。我已经尝试过将CURLOPT_SSL_VERIFYPEER和CURLOPT_StSL_VERIFYHOST设置为FALSE,但twitter SSL是有效的,因此不建议使用

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

如果它是缓存的,也许你的代理有一个来自实际无效请求的缓存回复?

最新更新