2014-02-11 19 views
1

我試圖做一個HTTP請求使用tornado.httpclient一個JSON API像https://api.github.com,我發現它總是被禁止的403簡單的未授權的請求到Github的API

響應簡化,我讓CLI使用的要求:

$ python -m tornado.httpclient https://api.github.com

得到一個tornado.httpclient.HTTPError: HTTP 403: Forbidden

另一方面,如果我嘗試通過瀏覽器或簡單的$ curl https://api.github.com請求此URL,則響應爲200 OK並顯示正確的JSON文件。

這是什麼造成的?我是否應該在tornado.httpclient請求中設置一些特定的標題?請求curl有什麼區別?

回答

1

你必須把用戶代理的請求,請參見Github API更多細節:

所有API請求必須包含一個有效的User-Agent頭。請求與 否User-Agent標題將被拒絕。我們要求您使用 GitHub用戶名或您的應用程序的名稱作爲User-Agent 標題值。這樣,如果有

0

這可能是他們的問題robots.txt。也許tornado.httpclient修改用戶代理的方式,使其看起來像一個網絡爬蟲?我對它並不熟悉。

0

我遇到類似的問題,問題與您聯繫&問題是與configurable-http-proxy,所以我殺了它的進程&重啓jupyterhub

ps aux | grep configurable-http-proxy

,如果有任何PID的從上面的命令,用它們殺死它們

kill -9 <PID>

並重啓``