首页 > python的requests登录到知乎

python的requests登录到知乎

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地址改为你自己想要的,即在完成登陆之后,你就可以加你自己喜欢的代码了.

注意修改上面的账号和密码为自己的.

附代码运行截图:

【热门文章】
【热门文章】