python贴吧顶贴_python模拟登录百度贴吧

该博客展示了如何使用Python的urllib库进行网页登录操作,通过获取和设置cookies来实现。首先,它从指定URL获取数据,然后进行登录流程,包括获取token、构造登录参数并发送登录请求。登录成功后,它从'http://tieba.baidu.com/f/user/json_userinfo'获取用户信息。整个过程涉及HTTP请求、cookie管理和JSON解析。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

做点贡献吧,觉得还是从浏览器导出cookies然后调用简单:

截图如下:

224bd60735fae6cdef56097f0db30f2443a70faa.jpg

代码:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import sys,time,re,urllib.parse,urllib.request,http.cookiejar,random,math,os.path,hashlib,json,binascii,threading

"""cookie"""

cookie=http.cookiejar.LWPCookieJar()

#cookie.load('f:/cookie.txt',True,True)

chandle=urllib.request.HTTPCookieProcessor(cookie)

"""获取数据"""

def getData(url):

r=urllib.request.Request(url)

opener=urllib.request.build_opener(chandle)

u=opener.open(r)

#chandle.cookiejar.save('f:/cookie.txt',True,True)

data=u.read()

try:

data=data.decode('utf-8')

except:

data=data.decode('gbk','ignore')

return data

def postData(url,data):

data=urllib.parse.urlencode(data);data=bytes(data,'utf-8')

r=urllib.request.Request(url,data)

opener=urllib.request.build_opener(chandle)

u=opener.open(r)

#chandle.cookiejar.save('f:/cookie.txt',True,True)

data=u.read()

try:

data=data.decode('utf-8')

except:

data=data.decode('gbk','ignore')

return data

def login(name,pwd):

url='http://www.baidu.com'

getData(url)

par={

"apiver":'v3',

"callback":'bd__cbs__oug2fy',

"class":'login',

"logintype":'dialogLogin',

"tpl":'tb',

"tt":'1385013373144'

}

url='https://passport.baidu.com/v2/api/?getapi&%s' % urllib.parse.urlencode(par)

token=re.findall('"token" : "(.*?)"',getData(url))[0]

par.update({"isphone":'false',"username":name,"token":token})

url='https://passport.baidu.com/v2/api/?logincheck&?%s' % urllib.parse.urlencode(par)

data={

"charset":'GBK',

"mem_pass":'on',

"password":pwd,

"ppui_logintime":'1612376',

"quick_user":'0',

"safeflg":'0',

"splogin":'rate',

"u":'http://tieba.baidu.com/'

}

url='https://passport.baidu.com/v2/api/?login'

par.update(data)

bdu=re.findall('hao123Param=(.*?)&',postData(url,par))[0]

par={

"bdu":bdu,

"t":'1385013373144'

}

url='http://user.hao123.com/static/crossdomain.php?%s' % urllib.parse.urlencode(par)

getData(url)

print(json.loads(getData('http://tieba.baidu.com/f/user/json_userinfo')))

"""------输入帐号密码------"""

login('帐号','密码')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值