生活当中免不了要下载百度文库,但是百度很恶心的是要下载券,收费呀啥的(这次的这个不能下载收费文档哦),以是我就在微信的搜索功能(非常强大)上搜怎么样免费下载百度文库,加了一些群,个中一个群便是有一个有专门的机器人,只要你往群里发链接,机器人自动回答你下载链接
首先我在csdn上查阅干系资料群机器人的文章,明白Python关于群机器人有两大类,QQ群用qqbot库(基于smartqq),微信群用itchat库(基于微信网页版)。但是腾讯已经把smartQQ关了(也便是不能通过qqbot来制作QQ群机器人),只能建一个微信群机器人
我的制作思路:

1、通过itchat登录微信,实时监听所要建的群,假如有人发文库链接,将链接提取出来(比较大略)
2、将所提取到的文库连接保存,然后要求下载网站,网站返回下载链接(这个还得要自己去抓包,去逐步剖析,我也是花了一整天才把他全体下载流程弄懂,很麻烦,本日我们重点讲这个,你们可以拿其他网站试试,亲测这个链接很长,我用到了百度的短连接,为了本帖不冗长,省去不讲)
3、将网站返回的链接发送给相应的群,并@相应的人(比较大略)
二
准备
这个网站链接是:http://139.224.236.108/1.html(免费给他打了一波广告把,这个网站是收费的,下载的文档也是源文档,买账号也就几块钱,但是每个账号每天会限定下载次数,但是你可以多买几个账号,当一个被限定了之后,遍历其他账号,这样就OK了,实在下载文档这个不是常常下,但是有需求的时候没有下载券就麻烦了,为了兄弟们更好的复现,我把我买的账号分享给大家)
三
详细
在百度文库上随便获取一个要下载券的文档链接,
点击下载之后又是一波抓包,发送了要求post和nocode
跳转到如下界面:
再点击这个下载,又发送了一个要求详细见下面的down(),我就不再过多讲了
机器人代码:
import requests
firsturl=input('请输入文档链接:')
# 以下用到了两个链接,一个是查询文档ID的,另一个是下载的
url1 = \"大众http://139.224.236.108/post.php\公众
url3 = \"大众http://139.224.236.108/downdoc.php\公众
# 将传入的文档链接进行转化
downloadurl = firsturl.replace(\"大众/\"大众, \公众%2F\"大众).replace(\"大众:\"大众, \"大众%3A\"大众)
# head1查询文档ID的数据头
# data1是查询的数据内容,个中将docinfo的值转化为链接
# 查询得到结果,截取id的那一段并返回
def query():
head1 = {\"大众POST\公众: \"大众/post.php HTTP/1.1\"大众,
\"大众Host\"大众: \"大众139.224.236.108\"大众,
\公众Content-Length\"大众: \"大众145\"大众,
\"大众Accept\"大众: \"大众/\公众,
\公众Origin\公众: \公众http://139.224.236.108\"大众,
\"大众X-Requested-With\公众: \公众XMLHttpRequest\"大众,
\"大众User-Agent\公众: \公众Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36\"大众,
\"大众Content-Type\公众: \公众application/x-www-form-urlencoded; charset=UTF-8\"大众,
\公众Referer\"大众: \"大众http://139.224.236.108/1.html\公众,
\公众Accept-Encoding\"大众: \"大众gzip, deflate\公众,
\"大众Accept-Language\"大众: \公众zh-CN,zh;q=0.9,en;q=0.8\"大众,
\"大众Cookie\"大众: \"大众usrname=901961495; usrpwd=559448\"大众
}
data1 = 'usrname=901961495&usrpass=559448&docinfo=downloadurl&taskid=up_down_doc1'
data1 = data1.replace('downloadurl', downloadurl)
respons = requests.post(url1, data=data1, headers=head1).json()
id = respons['url']
id = id[37:]
return id
id = query()
# head3下载文档的数据头
# data3是要求下载的数据内容,个中vid是查询内容返回的文档id值
# 获取下载链接
def down():
Referer = \公众http://139.224.236.108/nocode.php?id={docid}\公众
head3 = {\"大众POST\"大众: \公众/downdoc.php HTTP/1.1\公众,
\"大众Host\"大众: \"大众139.224.236.108\"大众,
\公众Content-Length\"大众: \公众54\公众,
\"大众Accept\"大众: \"大众/\公众,
\"大众Origin\"大众: \"大众http://139.224.236.108\"大众,
\公众X-Requested-With\公众: \公众XMLHttpRequest\"大众,
\"大众User-Agent\"大众: \公众Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36\"大众,
\"大众Content-Type\公众: \"大众application/x-www-form-urlencoded; charset=UTF-8\"大众,
\"大众Referer\"大众: Referer.format(docid=id),
\"大众Accept-Encoding\公众: \"大众gzip, deflate\"大众,
\"大众Accept-Language\"大众: \"大众zh-CN,zh;q=0.9,en;q=0.8\"大众,
\"大众Cookie\"大众: \"大众usrname=901961495; usrpwd=559448\公众
}
data3 = 'vid={docid}&taskid=directDown'
data3 = data3.format(docid=id)
response = requests.post(url3, data=data3, headers=head3).json()
downurl = response[\公众dlink\公众].replace(\公众\\\公众, '')
print(downurl)#点击这个URL,会自动下载文件哦
return downurl
query()
down()
上面可以实现一个独立的下载,但是如果我们要和微信联系起来,制作微信机器人,那么,我们可以把上面的query(),down(),弄成一个函数,传入一个链接,经由这个函数处理,返回下载地址,到时候直接调用这个函数即可
接下来便是上岸微信,监控对应的群,放在做事器上,你就可以打造出24小时下载的机器人了。
实当代码:
@itchat.msg_register([itchat.content.TEXT], isGroupChat=True) # 注册一个群的处理
def print_content(msg):
if msg.User[\"大众NickName\"大众] == qun:# 这里可以在后面加更多的or msg.User[\公众NickName\"大众]=='你希望自动回答群的名字
if str(msg['Text'][0:5])==\"大众https\公众:#检测所发的是不是链接,是通过前5个
huifubdwk= GET_SHORTURL(str(msg['Text']))#这个GET_SHORTURL是我上面所说的那个函数,我自己定义的
print(msg.User['NickName'] + \"大众:\"大众 + msg['Text'] ) # 打印哪个群给你发了什么
print(\公众%s+\n\"大众%huifubdwk) # 打印机器人回答的
itchat.send(u'@%s\u2005 %s' % (msg['ActualNickName'],huifubdwk), msg['FromUserName'])
else:# 不是链接直接忽略
print(msg['Text'])
else:#不是相应群直接忽略
pass
好了,本日到这就结束了
来源网络,侵权联系删除
私信我或关注微旗子暗记:狮范儿,回答:学习,获取免费学习资源包。