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)

 

    

 

     

     

     

     

 

posted @ 2018-10-02 05:56  Caionk  阅读(777)  评论(0编辑  收藏  举报