• Requests方法 -- 重定向操作


    一、重定向
    1. (Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置,从地址A跳转到地址 B 了。
    2.重定向状态码:
    --301 redirect: 301 代表永久性转移(Permanently Moved)
    --302 redirect: 302 代表暂时性转移(Temporarily Moved )
    3.举个简单的场景案例,先登录博客园打开我的博客首页,进我的随笔编辑界面,记住这个
    地址:https://i.cnblogs.com/EditPosts.aspx?opt=1
    4.退出博客园登录,把刚才我的随笔这个地址输入浏览器回车,抓包会看到这个请求状态码是 302,浏览器地址栏瞬间刷新跳到登录首页去了

    二、禁止重定向(allow_redirects )
    1.用 get 方法请求:https://i.cnblogs.com/EditPosts.aspx?opt=1
    2.打印状态码是 200,这是因为 requets 库自动处理了重定向请求了,默认是allow_redirects=True 是启动重定向

    3.自动处理重定向地址后,我们就获取不到重定向后的 url 了,就无法走下一步,这里我们可以设置一个参数禁止重定向:allow_redirects=False
    (allow_redirects=True 是启动重定向),然后就可以看到 status_code 是 302 了


    三、获取重定向后地址
    1.在第一个请求后,服务器会下发一个新的请求链接,在 response 的 headers 里,如下抓包:Location

    2.用脚本去获取 Location 地址

    四、代码参数

    import requests
    #禁用安全请求警告
    from requests.packages.urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

    url = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
    headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
    }
    s = requests.Session()
    #打开我的随笔
    r = s.get(url,headers=headers,verify=False,allow_redirects=False)
    # print(r.content.decode("utf-8"))
    #打印状态码,自动处理重定向请求
    print(r.status_code)
    #获取重定向后的地址
    print(r.headers["Location"])

  • 相关阅读:
    [LeetCode] Walls and Gates
    [LeetCode] Expression Add Operators
    [LeetCode] Inorder Successor in BST
    [LeetCode] Peeking Iterator
    [CTCI] 最小调整有序
    [LeetCode] Single Number III
    [LeetCode] Zigzag Iterator
    [LeetCode] Wiggle Sort
    android 设颜色透明值
    android android BitmapFactory报错OOM
  • 原文地址:https://www.cnblogs.com/Teachertao/p/11146631.html
Copyright © 2020-2023  润新知