python 模拟知乎登陆
一、Python 模拟知乎登陆的实现
# coding=utf-8
import requests
import re
import time
class LogIn:
def __init__(self):
self.indexURL = 'https://www.zhihu.com'
self.loginURL = 'https://www.zhihu.com/login/email'
self.headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
'Origin':'https://www.zhihu.com',
'Referer':'https://www.zhihu.com/',
'Accept':'*/*',
'Accept-Encoding':'gzip,deflate,br',
'Accept-Language':'zh-CN,zh'
}
self.session = requests.session()
def getXSRF(self):
content = self.session.get(self.indexURL, headers=self.headers).content
xsrf_pattern = re.compile(r'<input type="hidden" name="_xsrf" value="(.*?)"')
xsrf = re.findall(xsrf_pattern, content)[0]
print xsrf
return xsrf
def getCaptcha(self):
captcha = self.session.get('https://www.zhihu.com/captcha.gif?r=%d&type=login' % (time.time() * 1000),headers=self.headers).content
with open('captcha.gif', 'wb') as fp:
fp.write(captcha)
def logInZhiHu(self,userName,password):
_xsrf = self.getXSRF()
self.getCaptcha()
captcha = raw_input('captcha:')
data = {
'_xsrf': _xsrf,
'password': password,
'captcha': captcha,
'email': userName,
'remember_me': 'true'
}
resp = self.session.post('https://www.zhihu.com/login/email', data=data, headers=self.headers).content
#print resp
return self.session
if __name__ == '__main__':
a = LogIn()
session = a.logInZhiHu('2287266007@qq.com','www1234')
print session.get("https://www.zhihu.com", headers=a.headers).content