2016-12-27 61 views
1

我注意到,Python的請求庫不像我的瀏覽器那樣遵循某些URL重定向。如何Python請求跟隨我的瀏覽器的URL

例如,當我這樣做:

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

最終URL 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/

在這些情況下,有沒有辦法讓請求像我的瀏覽器一樣運行?

回答

4

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

相關問題