import requests
import re
import time
from subprocess import Popen
headers ={
'Accept':'*/*' ,
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With':'XMLHttpRequest',
'Referer':'http://www.zhihu.com',
'Accept-Language':'zh-CN',
'Accept-Encoding':'gzip, deflate',
'User-Agent':'Mozilla/5.0(Windows NT 6.1;WOW64;Trident/7.0;rv:11.0)like Gecko',
'Host':'www.zhihu.com'
}
s =requests.session()
r = s.get('http://www.zhihu.com',headers =headers)
def getXSRF(r):
cer = re.compile('name=\"_xsrf\" value=\"(.*)\"', flags = 0)
strlist = cer.findall(r.text)
return strlist[0]
_xsrf =getXSRF(r)
print(r.request.headers)
print(str(int(time.time()*1000)))
Captcha_URL= 'http://www.zhihu.com/captcha.gif?r='+ str(int(time.time()*1000))
r = s.get(Captcha_URL,headers =headers)
with open('code.gif','wb') as f:
f.write(r.content)
Popen('code.gif',shell =True)
captcha =input('captcha: ')
login_data ={
'_xsrf':_xsrf,
'email':'xxxxx',
'password': 'xxxx',
'remember_me':'true',
'captcha':captcha
}
s.post('http://www.zhihu.com/#signin',data=login_data,headers=headers)
r =s.get('http://www.zhihu.com')
print(r.text)
输入验证码后还是无法登录
为何我的错误一直是10030登录过于频繁 但是网页却可以登录?
知乎登陆时
如果账号是Email,则提交的URL地址是 http://www.zhihu.com/login/email
, email对应的字段名是email
.
如果是手机号, 则提交的URL地址是 http://www.zhihu.com/login/phone_num
, 手机号对应的字段名是 phone_num
.
而不是 http://www.zhihu.com/#signin
import requests
import re
import time
from subprocess import Popen
headers ={
'Accept':'*/*' ,
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With':'XMLHttpRequest',
'Referer':'http://www.zhihu.com',
'Accept-Language':'zh-CN',
'Accept-Encoding':'gzip, deflate',
'User-Agent':'Mozilla/5.0(Windows NT 6.1;WOW64;Trident/7.0;rv:11.0)like Gecko',
'Host':'www.zhihu.com'
}
s =requests.session()
r = s.get('http://www.zhihu.com',headers =headers)
def getXSRF(r):
cer = re.compile('name=\"_xsrf\" value=\"(.*)\"', flags = 0)
strlist = cer.findall(r.text)
return strlist[0]
_xsrf =getXSRF(r)
print(r.request.headers)
print(str(int(time.time()*1000)))
Captcha_URL= 'http://www.zhihu.com/captcha.gif?r='+ str(int(time.time()*1000))
r = s.get(Captcha_URL,headers =headers)
with open('code.gif','wb') as f:
f.write(r.content)
Popen('code.gif',shell =True)
captcha =input('captcha: ')
login_data = {
'_xsrf':_xsrf,
'email':'xxxxx@xxx.com',
'password': 'xxxxx',
'remember_me':'true',
'captcha':captcha
}
r = s.post('http://www.zhihu.com/login/email',data=login_data,headers=headers)
print(r.text)
r = s.get('http://www.zhihu.com/settings/profile')
print(r.text)
PS: 最后请求的地址改为
帐号设置 - 知乎
的URL地址, 该地址在未登陆的情况下, 请求是会跳到登陆页的再PS:这里只是演示真的登陆成功了,你可以把最后的URL地址改为你自己想要的,即在完成登陆之后,你就可以加你自己喜欢的代码了.
注意修改上面的账号和密码为自己的.
附代码运行截图: