【问题标题】:How to Python requests to follow URL like my browser如何 Python 请求像我的浏览器一样跟随 URL
【发布时间】:2017-05-12 03:58:30
【问题描述】:

我注意到 Python 的请求库不像我的浏览器那样遵循某些 URL 重定向。

例如,当我这样做时:

response = requests.get('http://www.bbmt.org/', verify=False, allow_redirects=True)

最终到达网址是https://secure.jbs.elsevierhealth.com/action/consumeSsoCookie?redirectUri=http%3A%2F%2Fwww.bbmt.org%2Faction%2FconsumeSharedSessionAction%3FMAID%3DJ3%252BqsjOKzWZhWAeF2bXl%252FA%253D%253D%26JSESSIONID%3DaaaorUqRLHgAe4WCenKv%26SERVER%3DWZ6myaEXBLEt1UgI9cIkvA%253D%253D%26ORIGIN%3D470200154%26RD%3DRD&acw=&utt=

但是,在我的浏览器中,我最终被重定向回http://www.bbmt.org/

在这些情况下,有没有办法让请求的行为像我的浏览器一样?

【问题讨论】:

    标签: python redirect python-requests


    【解决方案1】:

    https://secure.jbs.elsevierhealth.com 内的重定向是一个 javascript 重定向。
    您可以在源代码中看到它:

    window.location.href = "http://www.bbmt.org/action/consumeSharedSessionAction?SERVER=WZ6myaEXBLHj3ZzqSv9HPw%3D%3D&MAID=IBS8Eq6B1iRWhf2ywTW5pg%3D%3D&JSESSIONID=aaa8eY-zM394XcPptT_Kv&ORIGIN=670572791&RD=RD";
    

    您需要运行 javascript 才能执行此重定向(这是请求不做的事情)。

    如果您需要针对此特定重定向的解决方案,您可以解析响应的内容(在 python 中)并获取特定的 URL 并使用它来创建新请求。

    如果您需要通用解决方案 - 您将需要使用无头浏览器来执行此操作。你可以找到more information in this question

    【讨论】:

      猜你喜欢
      • 2021-04-14
      • 2011-01-27
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      相关资源
      最近更新 更多