2016-05-05 1 views
-1

Создайте скрипт, загружающий страницу с моего сервера (с IP-сервером и т. Д.) - все в порядке, но если я хочу нажать любую ссылку, я приземлился на страницу ошибок 404, потому что ссылка - что-то вроде это:Запрос на загрузку Python на загрузочную страницу

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

Мой код:

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') 

Вот лив е пример:

http://37.139.17.81:5000/

Как я могу разобрать нажмите URL и получить это содержание ссылок?

ответ

2

Вы в основном пытаетесь заставить свою страницу действовать как прокси-сервер для удаленной страницы. Чтобы сделать это полностью, вам нужно обрабатывать все ссылки на удаленной странице.

Так например, если есть такая ссылка, как /something/something, колба автоматически попытается сопоставить ее с местным адресом (http://yourserver.com/something/something). Учитывая тот факт, что вы только определить один маршрут («/») приложение определит, что любая другая страница не существует и возвращает 404.

Чтобы справиться с этим правильно, вы можете попробовать следующее:

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 

Слово предупреждения: этот подход может нарушаться в различных случаях (например, загрузка css и js), поэтому вам может потребоваться проверить результаты после загрузки страницы.

0

Ваш «скрипт» - это приложение-фляга, работающее на локальном сервере http://37.139.17.81:5000/.

Когда вы нажимаете на ссылку со страницы, загруженной с другого сайта, ваше приложение фляги, по разумным соображениям, думает, что оно ссылается на страницу в фляжном приложении и поэтому пытается загрузить страницу в локальном приложении.
Приложение флеши ищет ссылки на локальном сервере, вероятно, потому, что ссылки на загруженной вами странице являются относительными ссылками.

Для разбора ссылки, которые вы могли бы использовать что-то вроде 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='') 

Я должен спросить, почему вы пытаетесь загрузить страницу PHP в приложение колба?

+0

Я пытаюсь создать небольшую анонимную услугу - загружать запрещенные (в моей стране) страницы с моего сервера (так называемый онлайн-прокси). Я хочу создать подобный аналог - https://hide.me/en/proxy –

0

Для href="/html/privacy-check.php" вы должны сделать

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

Поскольку он не может найти ни одного матча URL-адрес для /html/privacy-check.php на сервере, он бросает ошибку 404.

Смежные вопросы