页面在浏览器中重定向,但在python中不重定向

时间:2016-02-20 12:31:56

标签: python

我试图测试网站,看看他们是否从HTTP重定向到HTTPS。这是我的代码。

import requests
url = "http://www.google.com"
page = requests.get(url)
if page.history:
    print ("Request was redirected")
    for resp in page.history:
        print (resp.status_code, resp.url)
    print ("Final destination:")
    print (page.status_code, page.url)
else:
    print (page.headers)
    print (page.history)
    print(page.url)
    print(page.status_code)
    print ("Request was not redirected")

当我使用各种在线标题检查器测试http://www.google.com时,我获得了302重定向到https网站。但是,当我运行上面的代码时,我得到一个200状态代码和一个页面结果。但是,当我使用像http://fb.com这样的网站运行代码时,我得到以下结果。

Request was redirected
301 http://fb.com/
302 http://www.facebook.com/?_rdr
Final destination:
200 https://www.facebook.com/

这只是一些谷歌的事情,还是我错过了什么。

1 个答案:

答案 0 :(得分:0)

Google根据用户代理字符串做了很多魔术。尝试抓取

page = requests.get(url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'})

或使用其他一些用户代理字符串,看看是否会改变行为。

另外,请注意,如果您使用脚本访问Google,则只要您被阻止并且至少看到验证码,即使您拥有真实的用户代理字符串,也不会花费很长时间。