Python3.3.3 模拟浏览器登录知乎

import urllib.request as ur
import urllib.parse as up
import re
from http.cookiejar import CookieJar

# 知乎post数据里有一个_xsrf,需要从原网页中提取
def xsrf():
    url = 'http://www.zhihu.com/login'
    zhihu = ur.urlopen(url).read().decode('utf-8')
    pattern = re.compile(r'name="_xsrf" value="(.*?)"/>')
    match = pattern.findall(zhihu)
    xsrf = match[0]
    return xsrf
    
# post数据
def post_data():
    data = dict()
    data['_xsrf'] = xsrf
    data['email'] = 'your email'
    data['password'] = 'your password'
    data['rememberme'] = 'y'
    
    post_data = up.urlencode(data).encode('utf-8') # 编译post数据
    return post_data
    
    
hdr = {'Accept':'*/*',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.8',
#'Connection':'keep-alive',
#'Content-Length':'95',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
#'Host':'www.zhihu.com',
#'Origin':'http://www.zhihu.com',
#'RA-Sid':'DEADFC42-20150104-093648-9e5c2d-88ba9a',
#'Referer':'http://www.zhihu.com/',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
'X-Requested-With':'XMLHttpRequest'}

# cookie上创建一个opener
def build_openner():
    cookie = CookieJar()
    cookie_handler = ur.HTTPCookieProcessor(cookie)
    opener = ur.build_opener(cookie_handler)
    return opener



xsrf = xsrf()
post_data = post_data()
opener = build_openner()
ur.install_opener(opener) # 安装opener

def main():
    url = 'http://www.zhihu.com/login'
    req = ur.Request(url, post_data, hdr)
    response = opener.open(req)
    page = response.read()
    #print(page)
    # 测试成功与否
    testurl = 'http://www.zhihu.com/settings/account'
    req = ur.urlopen(testurl)
    print(req.read().decode('utf-8'))
    
main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值