【问题标题】:How can one intercept an HTTP request, stop the request, and redirect the user to another site?如何拦截 HTTP 请求、停止请求并将用户重定向到另一个站点?
【发布时间】:2021-03-02 03:15:41
【问题描述】:

我正在使用 Python 开发 url 重定向器应用程序。这个应用程序的想法很简单:当用户向某个域(例如https://google.com)执行http请求时,应用程序停止请求并执行另一个http请求(例如https://github.com),从而将用户重定向到第二页。

不幸的是,我查看了 SO,但没有找到任何直接解决此问题的问题:

诚然,我只有一些伪造的伪代码来演示我想要做什么,但它可能会很有用:

import requests

original_site = "https://google.com"
redirect_site = "https://github.com"

def redirect_request():
    if requests.get(original_site) == True:
        requests.kill(request.original_site.id)
        requests.get(redirect_site)

我非常感谢任何建议。

编辑 - 这是我的意思的澄清:

用户运行我的python脚本,我称之为foobar.py,如下:

python foobar.py

然后用户打开网页浏览器,输入网址https://google.com,随着脚本的运行,用户实际上不会访问https://google.com,而是重定向到https://github.com

【问题讨论】:

  • 我不明白这里的上下文。如果用户在浏览器中键入 google.com,您的代码将如何“拦截”该请求?您是否假设他们已经安装了您的某些程序?
  • @JohnGordon 没错,我假设他们将从命令行运行脚本,例如python myscript.py 然后打开浏览器输入google.com
  • 您可能想要浏览器插件之类的东西。否则你不能让浏览器做这样的事情。或者您可以弄乱主机文件并在那里进行 DNS 重定向。
  • 使用 selenium 并注入一些执行重定向的 javascript 怎么样?因为我试图将其保留为 python 脚本,而不是浏览器插件。

标签: python redirect python-requests


【解决方案1】:

一种选择是,如果您尝试使用 python 构建一个轻量级 Web 应用程序,您可以在其中处理 HTTP 重定向,您可以使用 Flask 接受路由上的 GET,然后简单地执行重定向。

from flask import Flask, redirect
app = Flask(__name__)

@app.route('/')
def index():
    return redirect("https://www.google.com")

但要更直接地回答您的问题,您不会“停止”最初的请求。您只需找到一种方法来处理它并返回您指定的响应。

【讨论】:

  • 请注意,这只会将 http://localhost:8080 重定向到 google.com
  • 它将从应用程序所在的任何域重定向。如果你在 localhost:XXXX 上服务,它也可以在那里工作。
  • 鉴于 OP 希望用户在本地运行他的脚本,这很可能是 localhost。
  • @SamYi 我不仅想重定向本地主机,还想重定向任何给定的域。
猜你喜欢
  • 2018-02-03
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
相关资源
最近更新 更多