requests模拟登陆

Posted artisticmonk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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代表某一次连接
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)

 

    

 

     

     

     

     

 


以上是关于requests模拟登陆的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫 —— 知乎之selenium模拟登陆+requests.Session()获取cookies

requests模拟登陆

requests-模拟登陆

python requests模拟登陆正方教务管理系统,并爬取成绩

python requests模拟登陆github

requests模拟登陆的三种方式