Python请求:如何限制同一域名内的重定向?

erhoui1w  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(121)

在Python中,我有:

session = requests.Session()
session.max_redirects = max_red
response = session.get(ip_address)

但我如何限制重定向到同一个域只?我的意思是,如果主请求是向192.168.1.1发出的,那么我希望允许重定向到192.168.1.1http://192.168.1.1https://192.168.1.1http://sub.192.168.1.1等。
我不想遵循任何外部重定向,如何在python中做到这一点?

disbfnqx

disbfnqx1#

注意:这是一个未经测试的方法,但这里是为了说明/启发
我不相信requests库有任何方法可以自动为您完成这项工作。
所以我建议你
1.禁用重定向(根据您的请求设置allow_redirects=False
1.检查Response对象,看看它是否是一个重定向响应(有可用的帮助器@property!)
1.解析重定向URL并决定是否遵循该重定向
类似于:

import requests
from urllib3.util import parse_url

intial_url = "http://192.168.1.1/"

response = requests.get(url=intial_url, allow_redirects=False)

# <https://github.com/psf/requests/blob/6e5b15d542a4e85945fd72066bb6cecbc3a82191/requests/models.py##L770-L775>
if response.is_redirect:
    redirect_url = response.headers["location"]

    if parse_url(intial_url).host == parse_url(redirect_url).host:
        # follow redirect?
        request.get(url=redirect_url, allow_redirects=False)

当然,还有更多的事情要做(例如:递归地跟随重定向),但认为它无论如何都可能有用

相关问题