zoukankan      html  css  js  c++  java
  • Python+requests重定向和追踪

    Python+requests重定向和追踪

    、什么是重定向

      重定向就是网络请求被重新定个方向转到了其它位置

    二、为什么要做重定向

      网页重定向的情况一般有:网站调整(如网页目录结构变化)、网页地址改变、网页扩展名(.php、.html、.asp)的改变、当一个网站注册了多个域名的时候。这些情况下都需要进行网页的重定向。不做重定向的话就容易出现404错误(如访问网上提供的网页url经常报404错误,就是有可能url地址改变了但没有做重定向导致的。)

    三、Python+requests重定向操作

      1、重定向分:301 redirect---》永久性重定向、302 redirect---》暂时性重定向,比如下图的302永久性重定向

     2、追踪重定向

    import requests
    url = 'http://home.cnblogs.com/u/xswt/'
    r = requests.get(url,params=None,headers={'Content-Type':'application/json'})
    print(r.history)#history追踪页面重定向历史

    运行结果:

    [<Response [301]>, <Response [302]>, <Response [302]>, <Response [302]>]
    #可以看到该请求做了多次重定向

    3、Python+requests获取重定向的url地址:

    import requests
    url = 'http://home.cnblogs.com/u/xswt/'
    r = requests.get(url,headers={"Content-Type":"application/json"})
    reditList = r.history#可以看出获取的是一个地址序列
    print(f'获取重定向的历史记录:{reditList}')
    print(f'获取第一次重定向的headers头部信息:{reditList[0].headers}')
    print(f'获取重定向最终的url:{reditList[len(reditList)-1].headers["location"]}')

    运行结果:

    获取重定向的历史记录:[<Response [301]>, <Response [302]>, <Response [302]>, <Response [302]>]
    获取第一次重定向的headers头部信息:{'Date': 'Fri, 06 Sep 2019 06:53:05 GMT', 'Content-Length': '0', 'Connection': 'keep-alive', 'Location': 'https://home.cnblogs.com/u/xswt/'}
    获取重定向最终的url:https://account.cnblogs.com/signin?returnUrl=http%3a%2f%2fhome.cnblogs.com%2fu%2fxswt%2f

    4、Python+requests重启和禁止重定向

    '''
    禁止重定向(all_redirects=False)
    '''
    import requests
    url = 'http://home.cnblogs.com/u/xswt/'
    r = requests.get(url,headers={"Content-Type":"application/json"},allow_redirects=False)
    print(r.status_code)
    print(r.text)

    运行结果:

    301
    '''
    重启重定向
    '''
    import requests
    url = 'http://home.cnblogs.com/u/xswt/'
    r = requests.get(url,headers={"Content-Type":"application/json"},allow_redirects=True)
    print(r.status_code)
    print(r.text)

    运行结果

    200
    <!DOCTYPE html><html lang=zh><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=EDGE"><meta name=viewport content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>用户登录 - 博客园</title><link rel="shortcut icon" href=//common.cnblogs.com/favicon.ico type=image/x-icon><script src="/assets/account/signin-iconfont.js?v=01OkrFmCBcVIQNTQ6W3Q8sMKdVgWbmPjCL6jUR8-WG0"></script><link rel=stylesheet href="/assets/commons.bundle.css?v=Oz63dDHd7T_Cfz5h2Sq0d3vui_UXH--HRn9V4awJQzk"><link rel=stylesheet href="/assets/shared/_card.css?v=IL3_1zWqtnCRPXGhVd5DWxlqIbzUxrVAMDMRBgNJqr0"><link rel=stylesheet href="/assets/account/signin.css?v=OQC4pMzU7K-SBw0eOIhORW9tPgMtc8t_KMFfauwhOe4"><script>window.captcha={captchaType:'Geetest'};</script><body><!--[if IE]><div class=unsupported-browser>该页面不支持 Internet Explorer 浏览器,建议使用 <a href="https://www.google.cn/intl/zh-CN/chrome/">Google Chrome</a>, <a href="https://www.mozilla.org/zh-CN/firefox/">Firefox</a> 或 <a href="https://www.microsoftedgeinsider.com/zh-CN/">Microsoft Edge</a></div><![endif]--><div class=center-container><div class="center-body card h-sm-100"><div class=card-body><div class="login-top text-center"><span class=login-title>博客园用户登录</span> <a href="https://www.cnblogs.com/"> <svg class=login-sign><use xlink:href=#icon-login-sign></use></svg> </a><div class=login-info>代码改变世界</div></div><form id=loginForm method=post onsubmit="return false" action="/signin?returnurl=http%3A%2F%2Fhome.cnblogs.com%2Fu%2Fxswt%2F"><div class=form-group><input tabindex=1 class=form-control placeholder=登录用户名 autofocus type=text data-val=true data-val-required=请输入登录用户名 id=LoginName name=LoginName> <span class="invalid-feedback field-validation-valid" data-valmsg-for=LoginName data-valmsg-replace=true></span> <a href=//passport.cnblogs.com/GetUsername.aspx class=txt-forget-sign>忘记登录用户名</a></div><div class=form-group><input tabindex=2 class=form-control placeholder=密码 type=password data-val=true data-val-required=请输入密码
     id=Password name=Password> <span class="invalid-feedback field-validation-valid" data-valmsg-for=Password data-valmsg-replace=true></span> <a class=txt-forget-sign href=/resetpassword>忘记密码</a></div><div class="form-check form-remember"><input tabindex=3 type=checkbox id=IsRemember name=IsRemember value=true> <label class=label-remember for=IsRemember>记住我</label></div><button tabindex=4 id=submitBtn type=submit class="btn-login btn btn-primary btn-sm ladda-button px-4" data-style=slide-down> <span class=ladda-label>登录</span> </button><div class=login-footer><div class=ajax-error-box><div class="ajax-error mb-2"></div></div><span>没有帐户,<a href=/signup>立即注册</a></span></div><input name=__RequestVerificationToken type=hidden value=CfDJ8BQYbW6Qx5RFuF4UTI7QvU0JhTrWuqHSETm-ZBHqozMUxn_xVSGIuIjhJup5YFxpPklNDOD4T8n4eWmtuKVsaDDIYZfq53CJV9nH8hmpuWAnu9T-D8XnbDP7ouAqv6uHIjB_jLDh33Ncimy9Z6h8yec></form><input type=hidden id=PublicKey name=PublicKey value=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp0wHYbg/NOPO3nzMD3dndwS0MccuMeXCHgVlGOoYyFwLdS24Im2e7YyhB0wrUsyYf0/nhzCzBK8ZC9eCWqd0aHbdgOQT6CuFQBMjbyGYvlVYU2ZP7kG9Ft6YV6oc9ambuO7nPZh+bvXH0zDKfi02prknrScAKC0XhadTHT3Al0QIDAQAB></div></div></div><script src="/assets/commons.bundle.js?v=hoU0LpMUGe-JXAnP-fFZtpXo0z2NRIKd7lcM9-aTiyw"></script><script src="/assets/shared/_withoutnav.js?v=y4G8garzujN3d6jIVIcqucumyuGzj_F89wPux5sCv80"></script><script src="/assets/account/signin.js?v=ZN5IPajeQxzfOVgdZ7bt4ZCCvcPFYWL-4fLGYVaP1Jk"></script>

      

  • 相关阅读:
    UVa-129
    UVa-524
    有点迷茫
    北邮之行~
    UVa-253
    心累--期末考试成绩
    UVa-220 Othello
    UVa-201 Squares
    UVA-1589 Xiangqi
    UVa-213 Message Decoding
  • 原文地址:https://www.cnblogs.com/xswt/p/11475164.html
Copyright © 2011-2022 走看看