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