requests模拟登录

常见的状态码php

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

 

  简单的模拟登录python

##简单的模拟登录
#好比提取到的请求信息:
# 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)
相关文章
相关标签/搜索