Python-Twisted: Reverse Proxy zur HTTPS-API: Verbindung konnte nicht hergestellt werden

Ich versuche, einen Reverse-Proxy zu erstellen, um mit bestimmten APIs (wie Twitter, Github, Instagram) zu kommunizieren, die ich dann mit meinem Reverse-Proxy für beliebige (Client-) Anwendungen aufrufen kann (denken Sie an einen API-Manager) ).

Auch ich benutze dazu einen LXC-Container.

Zum Beispiel ist hier der einfachste Code, den ich aus den Beispielen in den Twisted Docs gehackt habe:

from twisted.internet import reactor
from twisted.web import proxy, server
from twisted.python.log import startLogging
from sys import stdout
startLogging(stdout)

site = server.Site(proxy.ReverseProxyResource('https://api.github.com/users/defunkt', 443, b''))
reactor.listenTCP(8080, site)
reactor.run()

Wenn ich CURL innerhalb des Containers durchführe, erhalte ich eine gültige Anfrage (was bedeutet, dass ich die entsprechende JSON-Antwort erhalte).

Hier habe ich den CURL-Befehl verwendet:

curl https://api.github.com/users/defunkt

Und hier ist die Ausgabe, die ich erhalte:

{
  "login": "defunkt",
  "id": 2,
  "avatar_url": "https://avatars.githubusercontent.com/u/2?v=3",
  "gravatar_id": "",
  "url": "https://api.github.com/users/defunkt",
  "html_url": "https://github.com/defunkt",
  "followers_url": "https://api.github.com/users/defunkt/followers",
  "following_url": "https://api.github.com/users/defunkt/following{/other_user}",
  "gists_url": "https://api.github.com/users/defunkt/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/defunkt/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/defunkt/subscriptions",
  "organizations_url": "https://api.github.com/users/defunkt/orgs",
  "repos_url": "https://api.github.com/users/defunkt/repos",
  "events_url": "https://api.github.com/users/defunkt/events{/privacy}",
  "received_events_url": "https://api.github.com/users/defunkt/received_events",
  "type": "User",
  "site_admin": true,
  "name": "Chris Wanstrath",
  "company": "GitHub",
  "blog": "http://chriswanstrath.com/",
  "location": "San Francisco",
  "email": "[email protected]",
  "hireable": true,
  "bio": null,
  "public_repos": 107,
  "public_gists": 280,
  "followers": 15153,
  "following": 208,
  "created_at": "2007-10-20T05:24:19Z",
  "updated_at": "2016-02-26T22:34:27Z"
}

Wenn ich jedoch versuche, den Proxy über Firefox abzurufen, gilt Folgendes:

http: //10.5.5.225: 8080 /

Ich bekomme: "Konnte keine Verbindung herstellen"

So sieht mein Twisted-Log aus:

27.02.2016 [-] Protokoll geöffnet.

27.02.2016 [-] Seite ab 8080

27.02.2016 [-] Ab Werk

27.02.2016 [-] Ab Werk

27.02.2016 [-] 10.5.5.225 - - [27.02.2016: +0000] GET / HTTP / 1.1 501 26 - Mozilla / 5.0 (X11; Debian; Linux x86_64; rv: 44.0) Gecko / 20100101 Firefox / 44.0 "

27.02.2016 [-] Fabrik anhalten

Wie kann ich Twisted verwenden, um einen API-Aufruf zu tätigen (die meisten APIs sind heutzutage ohnehin HTTPS) und die erforderliche Antwort zu erhalten (im Grunde genommen, wie lautet die "200" -Antwort / JSON)?

Ich habe versucht, auf diese Frage zu schauen:Convert HTTP Proxy zu HTTPS Proxy in Twisted

Aber aus Sicht der Codierung ergab das wenig Sinn (oder es wurde nichts über Reverse-Proxying gesagt).

** Bearbeiten: Ich habe auch versucht, den HTTPS-API-Aufruf für einen regulären HTTP-Aufruf zu deaktiviere

curl http [Doppelpunkt] [Schrägstrich] [Schrägstrich] openlibrary [Punkt] org [Schrägstrich] artists [Schrägstrich] OL1A.json

(Die obige URL wurde formatiert, um Probleme mit Linkkonflikten zu vermeiden.)

Ich erhalte jedoch immer noch den gleichen Fehler in meinem Browser (wie oben erwähnt).

** Edit2: Ich habe versucht, Ihren Code auszuführen, erhalte jedoch den folgenden Fehler:

Fehler-Screenshot

Wenn Sie sich das Bild ansehen, sehen Sie den Fehler (beim Ausführen des Codes) von:

builtins.AttributeError: 'str' Objekt hat kein Attribut 'decode'

Antworten auf die Frage(2)

Ihre Antwort auf die Frage