【问题标题】:Twitter Api Search doesn't work through proxyTwitter Api Search 不能通过代理工作
【发布时间】:2014-01-29 17:39:49
【问题描述】:

我对新的 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 错误请求 内容类型:应用程序/json;字符集=utf-8 日期:2013 年 12 月 20 日星期五 09:22:59 UTC 服务器:tfe 严格的传输安全:max-age=631138519 内容长度:61 代理连接:保持活动 连接:保持活动 设置Cookie:guest_id=v1%3A138753137985809686;域名=.twitter.com;路径=/;过期=周日,2015 年 12 月 20 日 09:22:59 UTC 年龄:0 {"errors":[{"message":"Bad Authentication data","code":215}]}

我尝试在本地环境中使用 Charles Proxy 模拟代理,并且成功了。

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

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

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

【问题讨论】:

    标签: php curl twitter


    【解决方案1】:

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

    如果它被缓存,也许您的代理正在缓存来自实际无效请求的回复?

    【讨论】:

    • 缓存似乎不是问题。 Http 有效,所以我想我在通过代理使用 HTTPS 时遇到问题
    猜你喜欢
    • 2015-12-23
    • 2015-06-22
    • 1970-01-01
    • 2016-02-26
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多