【问题标题】:Python Requests getting final linkPython 请求获得最终链接
【发布时间】:2018-07-27 18:20:16
【问题描述】:

我知道我可能会以错误的方式解决这个问题。但我想弄清楚我们的代理服务器配置中的哪些资源 URL 已损坏或重定向到与我们存档的 URL 不同的 URL。

将资源传递到外代理前缀 URL 的示例是:

https://login.proxy.library.ohio.edu/login?auth=ou&url=https://www.whatismyip.com/

当这个 URL 被解析时,它应该重定向到代理链接

https://www-whatismyip-com.proxy.library.ohio.edu/

我想要的是在解析和重定向后获取最终 URL 的最终状态代码

我有代码方面的东西,只是一个 sn-p...

proxy_url = "https://login.proxy.library.ohio.edu/login?auth=ou&url=https://www.whatismyip.com/"
conn = requests.head(proxy_url, allow_redirects=True)
print conn.url[:-3]

[:-3] 是为了去掉字符串末尾一些奇怪的不需要的字符。

但是它只返回我传递它的原始链接。 解析和重定向后如何获取正确的代理 URL。

【问题讨论】:

    标签: python proxy python-requests


    【解决方案1】:

    您可以使用Response 对象的history 属性来跟踪重定向:

    resp = requests.head("http://some.url", allow_redirects=True)
    for elem in resp.history:
        print elem.url  # "some_other.url"
    

    Response.history 包含所有响应及其来自中间步骤的 URL。阅读更多here

    【讨论】:

    • 我在一分钟前尝试过。该列表返回为空,就像它只是停在该页面上并没有完全解决它。
    • 试过你的网址,它返回 200 状态。为什么你认为它必须被重定向?
    • 愚蠢的我,那个不是最初重定向的。 login.proxy.library.ohio.edu/login?auth=ou&url=http://…那个是
    • 事情是这样的:你的原始 url login.proxy.library 返回 200 状态和一些 html+js 代码。该js代码执行重定向。由于request 内部没有任何js 引擎,所以没有重定向。浏览器有js引擎并正确执行重定向。
    • 如果需要js可以使用selenium测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2021-06-05
    相关资源
    最近更新 更多