2016-05-05 12 views
-1

Erstellen Skript, das Seite von meinem Server lädt (mit Server IP etc.) - alles OK, aber wenn ich auf einen Link klicken möchte, landete ich auf 404 Fehlerseite, weil Link ist - etwas wie dies:Python Kolbenanfragen laden Seite

... 37.139.17.81:5000/html/privacy-check.php

Mein Code:

from flask import Flask 
import requests 

application = Flask(__name__) 

@application.route("/") 
def hello(): 
     result = requests.get("http://ipinfo.info/index.php") 
     return result.content 

if __name__ == "__main__": 
    application.run(host='0.0.0.0') 

Hier ist ein Liv e Beispiel:

http://37.139.17.81:5000/

Wie ich analysieren kann URL klicken und diesen Link Inhalt bekommen?

Antwort

2

Sie versuchen grundsätzlich, Ihre Seite als Proxy für die Remote-Seite zu verwenden. Um dies vollständig zu tun, müssen Sie alle Links auf der Remote-Seite behandeln.

Also zum Beispiel, wenn es eine Verbindung wie /something/something Kolben wird automatisch versuchen, es mit einer lokalen URL (http://yourserver.com/something/something) übereinstimmen. In Anbetracht der Tatsache, dass Sie nur eine einzige Route definieren („/“) wird die App bestimmen, dass eine andere Seite existiert nicht und wird ein 404.

zurückkehren Um dies zu umgehen richtig können Sie versuchen, die folgenden:

import urlparse 

@application.route("/") 
@application.route("/<url:path>") 
def hello(url=None): 
    baseurl = "http://ipinfo.info/" 
    if not url: 
     result = requests.get(urlparse.urljoin(baseurl,"index.php")) 
     return result.content 
    else: 
     result = requests.get(urlparse.urljoin(baseurl,url)) 
     return result.content 

Ein Wort der Warnung: Dieser Ansatz kann in verschiedenen Fällen brechen (css und js zum Beispiel laden), so dass Sie möglicherweise die Ergebnisse nach dem Laden der Seite überprüfen müssen.

0

Ihr "Skript" ist eine Flaschen-Anwendung, die auf einem lokalen Server ausgeführt wird http://37.139.17.81:5000/.

Wenn Sie auf einen Link von einer Seite klicken, die von einer anderen Site geladen wurde, denkt Ihre flask-Anwendung vernünftigerweise an einen Link zu einer Seite in der flask-Anwendung und versucht die Seite in der lokalen Anwendung zu laden.
Die flask-Anwendung sucht nach den Links auf dem lokalen Server, wahrscheinlich weil die Links auf der Seite, die Sie geladen haben, relative Links sind.

die Links analysieren Sie so etwas wie urlparse

from urlparse import urlparse 
o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html') 
o 
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', 
      params='', query='', fragment='') 

ich fragen verwenden könnte, warum Sie versuchen, eine PHP-Seite in einen Kolben Anwendung zu laden?

+0

Ich versuche, kleine anonyme Service zu erstellen - laden verboten (in meinem Land) Seiten von meinem Server (auch Online-Proxy). Ich möchte so etwas Analoges erstellen - https://hide.me/de/proxy –

0

Für href="/html/privacy-check.php" sollten Sie

@application.route("/html/privacy-check.php") 
def hello(): 
     result = requests.get("http://ipinfo.info/index.php") 
     return result.content 

tun, da es keine URL Spiel für /html/privacy-check.php auf Ihrem Server finden kann, wirft es 404 Fehler.