zoukankan      html  css  js  c++  java
  • requests模拟登陆

    常见的状态码

    code
    说明
    200 请求被成功处理
    301/302 永久性重定向/临时重定向
    403 没有权限访问
    404 表示没有对应的资源
    500 服务器错误
    503 服务器停机或正在维护

      简单的模拟登陆

    ##简单的模拟登陆
    #比如提取到的请求信息:
    # Headers:
    #     Request URL:https://passport.mafengwo.cn/login/
    #     Request Method:POST
    #     origin:https://passport.mafengwo.cn
    #     referer:https://passport.mafengwo.cn/
    #     User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36
    #
    # Form Data:
    #     passport:123456
    #     password:1235
    #
    import requests
    
    def zhihu_lo(account,password):
        ##
        postUrl = 'https://zhihu.com/login'
        headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36',
            'referer':'https: // passport.mafengwo.cn /'##重定向的
        }
        postData = {
            'passport':account,
            'password':password
        }
    
        response = requests.post(postUrl,data=postData,headers=headers)

    保存cookie信息

    #比如提取到的请求信息:
    # Headers:
    #     Request URL:https://passport.mafengwo.cn/login/
    #     Request Method:POST
    #     origin:https://passport.mafengwo.cn
    #     referer:https://passport.mafengwo.cn/
    #     User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36
    #
    # Form Data:
    #     passport:123456
    #     password:1235
    #
    import requests
    
    def _lo(account,password):
        ##
    
        try:
            import cookielib  ##这里是使用的python2的代码
        except:
            import http.cookiejar as cookielib  # 这里是使用python3的代码
        ##以上的这个尝试只是兼容python2和python3而已,也可以分开只写python3的
    
    
        #session代表某一次连接
        mysession = requests.session()
    
    
    
        # 因为原始的session.cookies 没有save()方法,所以需要用到cookielib中的方法LWPCookieJar,这个类实例化的cookie对象,就可以直接调用save方法。
        mysession.cookies = cookielib.LWPCookieJar(filename='保存的文件名称')
    
    
    
        postUrl = 'https://zhihu.com/login'
        headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36',
            'referer':'https: // passport.mafengwo.cn /'##重定向的
        }
        postData = {
            'passport':account,
            'password':password
        }
        #注意这里和上面的发生了一点小变化哦
        response = mysession.post(postUrl,data=postData,headers=headers)
    
        #这一句的好处是,登陆后就把cookies保存在了文件中,以后登陆就从文件取出cookie就可以了,不需要做重复的登陆
        #我这里为了好了解全部写在了一个函数中了
        mysession.cookies.save()#

    使用cookie登录

    #比如提取到的请求信息:
    # Headers:
    #     Request URL:https://passport.mafengwo.cn/login/
    #     Request Method:POST
    #     origin:https://passport.mafengwo.cn
    #     referer:https://passport.mafengwo.cn/
    #     User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36
    #
    # Form Data:
    #     passport:123456
    #     password:1235
    #
    import requests
    
    
    #session代表某一次连接,也就是代替一下requests
    mysession = requests.session()
    
    # 因为原始的session.cookies 没有save()方法,所以需要用到cookielib中的方法LWPCookieJar,这个类实例化的cookie对象,就可以直接调用save方法。
    mysession.cookies = cookielib.LWPCookieJar(filename='保存的文件名称')
    header = {
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36',
            'referer':'https: // passport.mafengwo.cn /'##重定向的
        }
    def _lo(account,password):
        ##
    
        try:
            import cookielib  ##这里是使用的python2的代码
        except:
            import http.cookiejar as cookielib  # 这里是使用python3的代码
        ##以上的这个尝试只是兼容python2和python3而已,也可以分开只写python3的
    
    
    
        postUrl = 'https://zhihu.com/login'
    
        postData = {
            'passport':account,
            'password':password
        }
        #注意这里和上面的发生了一点小变化哦
        response = mysession.post(postUrl,data=postData,headers=headers)
    
        #这一句的好处是,登陆后就把cookies保存在了文件中,以后登陆就从文件取出cookie就可以了,不需要做重复的登陆
        #我这里为了好了解全部写在了一个函数中了
        mysession.cookies.save()#
    
    
    def isLoginStart():
        routerUrl = 'http://zhihu.com/user.php'
        # 第一个是header,如果不设置,会返回500的错误
        # 第二个是allow_redirects,如果不设置,session访问时,服务器返回302,
        # 然后session会自动重定向到登录页面,获取到登录页面之后,变成200的状态码
        # allow_redirects = False  就是不允许重定向
        responses = mysession.get(routerUrl,headers = header,allow_redirects = False)
    
        if responses.status_code != 200:
            return False
        return True
    
    if __name__ == '__main__':
        mysession.cookies.load()
    
        if isLoginStart != True:
            print("cookies已经失效,正在重新登陆")
            _lo(123456,1235)
    
        rep = mysession.get('http://zhihu.com/user.php',headers = header,allow_redirects = False)
        print(rep.status_code)

        

         

         

         

         

    以上内容作为课堂笔记,如有雷同,请联系于我
  • 相关阅读:
    MVC设计模式
    NET Core 1.0
    《Nginx文件类型错误解析漏洞--攻击演练》 (转)
    AngularJs 基础(60分钟入门) (转)
    每个线程分配一个stack,每个进程分配一个heap;heap没有结构,因此寻址慢(转)
    声明式编程和命令式编程的比较(转)
    Android SimpleAdapter的参数
    RelativeLayout相对布局
    Tomcat、Apache、IIS这三种Web服务器来讲述3种搭建JSP运行环境的方法
    GitHub已将持续集成服务器Janky开源
  • 原文地址:https://www.cnblogs.com/ArtisticMonk/p/9736255.html
Copyright © 2011-2022 走看看