微博批量发布,微博定时发布,批量删除,批量评论等功能的实现
微博批量发布,微博定时发布
最新的微博将之前的登录做了修改,使自动登录获取cookie更难,就算获取了有效期也很短,需要长期不断的登录,因此研究了一下,最新的微博登录。
思路:
1.可以使用手机验证码,开放一个安卓短信监控将收到的微博短信验证自动获取,自动验证。
2.微博扫码也是可以。
放一个18年的微博模拟登录交流交流,如果需要最新的可以私信联系我,需要现成的微博运营工具也可以加我微信zhejizhao
class Weibo(object):
def __init__(self, username="", passwd="", pin_path="./pin.png", proxy=False):
self.r = requests.Session()
if proxy:
self.r.proxies={
'http': 'socks5://127.0.0.1:1080',
'https': 'socks5://127.0.0.1:1080',
}
self.username = username
self.passwd = str(passwd)
self.pin_path = pin_path
self.weibo_url = 'http://weibo.com/'
self.prelogin_url = 'https://login.sina.com.cn/sso/prelogin.php'
self.login_url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)'
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}
def login(self):
if not self._prelogin():
logger.warning('user:%s prelogin err' % self.username)
return None
self.sp = self._getPwd()
para = {
"encoding": "UTF-8",
"entry": "weibo",
"from": "",
"gateway": 1,
"nonce": self.nonce,
"pagerefer": "http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)",
"prelt": 117,
"pwencode": "rsa2",
"returntype": "TEXT",
"rsakv": self.rsakv,
"savestate": 0,
"servertime": self.servertime,
"service": "miniblog",
"sp": self.sp,
"sr": "1920*1080",
"su": self.su,
"useticket": 1,
"vsnf": 1,
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept - Encoding': 'gzip, deflate',
'Accept - Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': 'https://login.sina.com.cn/signup/signin.php?entry=sso',
'Host': 'login.sina.com.cn'
}
if self.showpin == 1:
print('验证码')
logger.debug('user:%s 需要验证码' % self.username)
para['door'] = self._getPin()
print(para['door'])
para['cdult'] = 2
para['pcid'] = self.pcid
para['prelt'] = 2041
time.sleep(4)
for try_times in range(2):
data = self.r.post(self.login_url, data=para, headers=headers)
print(data.status_code)
if data.status_code != 200:
print('错误1')
continue
else:
break
data = json.loads(data.text)
if data['retcode'] != "0":
logger.warning('user:%s retcode err:%s' % (
self.username, json.dumps(data, ensure_ascii=False)))
return None
self.ticket = data['ticket']
para={
'callback':'sinaSSOController.callbackLoginStatus',
'ticket': self.ticket,
'client': 'ssologin.js(v1.4.18)',
'retcode': 0,
'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&sudaref=weibo.com'
}
time.sleep(5)
ret = self.r.post('http://passport.weibo.com/wbsso/login', params=para, headers=self.headers)
if ret.status_code != 200:
print('错误2')
return None
#if self._is_account_exception():
# return None
cookies = self.r.cookies.get_dict()
cookies = str(cookies).replace(':', '=').replace(',', ';').replace('\'', '').replace('= ', '=')
print(cookies[1:-1])
return cookies[1:-1]
def _is_account_exception(self):
time.sleep(0.5)
ret = self.r.post(self.weibo_url, headers=self.headers)
if ret.text.find('账号存在异常') != -1:
logger.warning('user:%s exception' % self.username)
return True
if ret.status_code != 200:
logger.warning('user:%s exception' % self.username)
return True
else:
logger.info('user:%s login ok' % self.username)
return False
def _prelogin(self):
param = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept - Encoding': 'gzip, deflate',
'Accept - Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Host': 'weibo.com',
'Upgrade-Insecure-Requests:':1,
}
ret = self.r.get(self.weibo_url,headers=self.headers,params=param)
if ret.status_code != 200:
return False
self.su = self._getSu()
para = {
"_": time.time(),
"callback": "sinaSSOController.preloginCallBack",
"checkpin": 1,
"client": "ssologin.js(v1.4.18)",
"entry": "weibo",
"rsakt": "mod",
"su": self.su
}
ret = self.r.post(self.prelogin_url, params=para, headers=self.headers)
if ret.status_code != 200:
return False
d = ret.text
datas = re.findall(r'preloginCallBack\(([\w\W]+?)\)', d)
if not datas:
return False
data = datas[0]
data = json.loads(data)
self.servertime = str(data.get('servertime',''))
self.nonce = str(data.get('nonce', ''))
self.pubkey = data.get('pubkey', '')
self.rsakv = data.get('rsakv', '')
self.showpin = data.get('showpin', 0)
self.pcid = data.get('pcid', '')
logger.info('user:%s prelogin ok' % self.username)
return True
def _getSu(self):
'''
获取加密用户名: 只有 Base64
'''
return base64.encodestring(self.username)[:-1]
def _getPwd(self):
'''
获取加密密码sp
'''
rsaPubkey = int(self.pubkey, 16)
RSAKey = rsa.PublicKey(rsaPubkey, 65537) #创建公钥
codeStr = self.servertime +'\t'+ self.nonce +'\n'+ self.passwd
pwd = rsa.encrypt(codeStr, RSAKey) #使用rsa进行加密
return binascii.b2a_hex(pwd) #将加密信息转换为16进制。
def _getPin(self):
'''
验证码
'''
para = {
'p': self.pcid,
'r': random.randint(10000,100000),
's': 0
}
pic = self.r.post('http://login.sina.com.cn/cgi/pin.php', params=para, headers=self.headers)
return fateadm_api.TestFunc(pic.content)
微博批量发布,微博定时发布,批量删除,批量评论等功能的实现相关推荐
- 2023年最新批量删除微博_新版微博怎么批量删除自己发的微博?
2023批量删除微博插件小工具_微博如何一次性批量删除微博 一千多条微博怎么删?微博怎么批量删除_怎样把发的微博全删了 视频如下 2022最新批量删除微博丨怎么一键批量删除微博与删除关注? 目前微博不 ...
- wordpress自动批量定时发布插件 DX-auto-publish
DX-auto-publish是一款wordpress自动发布插件,方便实用. 该wordpress插件的主要功能如下: 1.能够自动批量定时发布wordpress站点的草稿文章,无需每篇文章都手动设 ...
- 批量删微博丨2023简易版本控制台批量删除微博代码
批量删微博丨简易版批量删除微博方法 微博点击头像到全是自己微博动态的个人主页 复制以下内容到浏览器控制台回车执行 function deleteMessage() {// 下箭头let iDom = ...
- HBase项目之谷粒微博:创建命名空间,微博内容表,用户关系表,微博收件箱表,发布微博内容,添加关注用户,移除(取关)用户,获取关注的人的微博内容,HBase实战项目
Hbase实战之谷粒微博 1 需求分析 1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容 2 代码实现 2.1 代码设计总览: 1) 创建命名空 ...
- 微博HTML怎么改,微博发布后可以修改吗 已发布微博怎么重新编辑
12月12日,微博正式上线了编辑功能,可对已发布的微博内容进行编辑修改.一般微博在发布后,发现内容中有瑕疵或纰漏,但此时微博已经积累了部分阅读和互动,删除重发的成本比较高.加入修改功能后,降低修改成本 ...
- php mysql redis mq_PHP基于Redis消息队列实现发布微博的方法
本文实例讲述了PHP基于Redis消息队列实现发布微博的方法.分享给大家供大家参考,具体如下: phpRedisAdmin :github地址 图形化管理界面 git clone [url]http ...
- 微博群发私信 php,用PHP基于Redis消息队列实现发布微博的方法
用PHP基于Redis消息队列实现发布微博的方法 PHP基于Redis消息队列实现发布微博的方法,结合实例形式分析了php+redis数据库的安装.连接.读取.插入等相关操作技巧,需要的朋友可以参考下 ...
- php表单数据提交到本业,PHP_PHP+Mysql+jQuery实现发布微博程序 php篇,先还是要说明本例的业务流程 - phpStudy...
PHP+Mysql+jQuery实现发布微博程序 php篇 先还是要说明本例的业务流程: 1.前端用户输入内容,并对输入的内容字数进行实时统计. 2.用户提交数据,jQuery实现通过Ajax向后台发 ...
- 如何将微博全景图下载到手机发布至QQ
如何将微博全景图下载到手机发布至QQ #第一步:获取图片 在电脑端用浏览器进入微博官方首页,打开搜索,搜索全景图,找到后可以看见一个链接,点击链接进入网页,如图1 #2,复制图片的地址. 2 保存到本 ...
- php curl发布微博,php curl利用嘀咕、搜狐微博API发布微博
嘀咕.搜狐微博API使用昨晚简单地研究了一下,下面是用php curl利用嘀咕.搜狐微博API发布微博,具体如下: $username = 'xieyanwei51'; $password = '12 ...
最新文章
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能
- a和a数值大小 计算机,Java求s=a+aa+aaa+aaaa+aa...a的值
- 研究速递:预测学习——神经元高效运作的最佳策略
- 北斗导航 | NED(北东地)转ECEF(地心地固)或ECEF转NED(Matlab源代码)
- [剑指offer]面试题22:栈的压入、弹出序列
- marlin 三角洲_带火花的三角洲湖:什么和为什么?
- 对于移动类型Z17和帐户64020100 物料号 (009)的不同的字段选择(公司间调拨)
- erdas裁剪影像_运用ERDAS裁剪影像
- mysql字符串区分大小写的问题
- 二分求浮点数的平方根
- socket通信相关知识
- Mac如何彻底卸载Mysql
- 黑苹果xxx.efi格式文件介绍
- 11-新闻发布系统数据库-新闻数据操作
- 树莓派4b自带wifi_树莓派4B(ubuntu)无线网络配置
- 通过温度湿度计算露点
- 电脑IE图标删不掉怎么办
- Matlab/Simulink仿真问题及技巧汇总【持续更新】
- iThenticate查重系统的使用及如何去除参考文献
- 致远互联:以数智化指引破局之道