吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16523|回复: 136
收起左侧

[Python 原创] 【python】80行代码打造微信机器人实现下载百度文库

    [复制链接]
laoxiaodiao 发表于 2019-7-12 03:26
本帖最后由 laoxiaodiao 于 2019-7-12 18:48 编辑

       前天发的秒刷蓝墨云视频,也许只对大学生有用点。说句实在话,第一次发帖还是有些期待得到大家的认可,这两天时不时翻一翻吾爱看看有没有伙伴回帖,着魔了一样{:1_909:} ,在这里谢谢版主的置顶,也谢谢一些哥们的建议,没有打码严实。加入吾爱这个大家庭很久了,还曾因为不活跃被踢走了,但我还是死皮赖脸的赖上他了:Dweeqw,放假这几天在论坛瞎逛,看到有些小伙伴在群里让人帮忙下载百度文库的文档,还是有些麻烦,恰好手里有一个微信机器人实现百度文库下载的小项目。就分享给大家.首先说一下搞这个小项目的始末吧(我这人废话比较多,见谅:lol),生活当中免不了要下载百度文库,但是百度很恶心的是要下载券,收费呀啥的(这次的这个不能下载收费文档哦),所以我就在微信的搜索功能(非常强大)上搜怎么样免费下载百度文库,加了一些群,其中一个群就是有一个有专门的机器人,只要你往群里发链接,机器人自动回复你下载链接,我艹,感觉6的飞起。曾经也在万能的淘宝上买了一些账号,有专门的下载网站,给你账号密码,只要你输入账号密码和文档的链接,点击下载就OK。话说自己能够下载应该就差不多了,但是我这个人就一个缺点,就想弄懂别人是怎么实现的这些功能,说出来你们别笑,我还曾经傻傻的拿namp,sqlmap把别人的服务器乱扫一通,想把别人的服务器拿下,看看别人怎么实现的这些功能{:1_908:},哎,还是流下了没有技术的泪水:'(weeqw,等我学成归来再说。经过上次的蓝墨云的视频,我对Python有了一些信心,也许还沉浸在刚刚破解蓝墨云的欢喜当中,初生牛犊不怕虎,虽然拿不了站,那我们换个思路,能不能通过Python爬取下载网站获得下载链接,然后发给群里,自己制作一个群机器人?说干就干!!!首先给大家看一下效果图吧。
效果图.jpg
        首先我在csdn上查阅相关资料群机器人的文章,明白Python关于群机器人有两大类,QQ群用qqbot库(基于smartqq),微信群用itchat库(基于微信网页版)。但是腾讯已经把smartQQ关了(也就是不能通过qqbot来制作QQ群机器人),只能建一个微信群机器人,那么我加的那个QQ群是怎么样下载的?还希望有所了解的大佬能帮我解答。
我的制作思路:
1、通过itchat登录微信,实时监听所要建的群消息,假如有人发文库链接,将链接提取出来(比较简单)
2、将所提取到的文库连接保存,然后请求下载网站,网站返回下载链接(这个还得要自己去抓包,去慢慢分析,我也是花了一整天才把他整个下载流程弄懂,很麻烦,今天我们重点讲这个,你们可以拿其他网站试试,亲测这个链接很长,我用到了百度的短连接,为了本帖不冗长,省去不讲)
3、将网站返回的链接发送给相应的群,并@相应的人(比较简单)


这个网站链接是:http://139.224.236.108/1.html(免费给他打了一波广告把,这个网站是收费的,下载的文档也是源文档,买账号也就几块钱,但是每个账号每天会限制下载次数,但是你可以多买几个账号,当一个被限制了之后,遍历其他账号,这样就OK了,其实下载文档这个不是经常下,但是有需求的时候没有下载券就麻烦了,为了兄弟们更好的复现,我把我买的账号分享给大家)
文档服务登录界面.png
在百度文库上随便获取一个要下载券的文档链接,
点击下载之后又是一波抓包,发送了请求post和nocode
跳转到如下界面:
第一次点击下载post.png
nocode1.png
nocode2.png

再点击这个下载,又发送了一个请求具体见下面的down(),我就不再过多讲了,现在都已经两点半了{:1_909:}


下载的实现如下

            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


好了,今天到这就结束了(主要是太晚了,有啥不懂的回帖),第一次用MD搞代码,还不太会用,直接复制肯定运行不了,如果是那种真的白又白的小白,请下载我的附件,我现在的代码已经改了,增加了看电影,接入了图灵机器人,但附件里的文件应该没有问题,假如你们运行不了,可以反馈,欢迎大家和我交流,聊啥都行,一起进步,其实这个机器人还可以有更多玩法,今天只讲了下载文库这个东西,兄弟们可以打开脑洞,增加一些其他的功能,同时也希望哪位老师可以帮我解答上面那个问题,别人下载文库源文件这个功能是如何的呢?难道百度文库有漏洞吗?

bdwk.txt

4.11 KB, 下载次数: 310, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 30吾爱币 +32 热心值 +29 收起 理由
geniusrot + 1 + 1 那不得电脑一直打开嘛?
pinhai + 1 用心讨论,共获提升!
小拾柒是我的 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
smth + 1 我很赞同!
万里绿枫叶 + 1 + 1 用心讨论,共获提升!
去宇宙旅行 + 1 + 1 大概看懂了
mikeee + 1 + 1 谢谢@Thanks!
吾中意你 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
迢迢千里月 + 1 + 1 谢谢@Thanks!
淡淡d + 1 + 1 热心回复!
bydlyzx + 1 + 1 用心讨论,共获提升!
Chendaxiao + 1 + 1 热心回复!
jackyu + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qq3bot + 1 + 1 谢谢@Thanks!
sunhaipeng1997 + 1 + 1 用心讨论,共获提升!
曳尾于涂 + 1 + 1 很棒
肉夹馒 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
天域至尊 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
发高烧的傻帽 + 1 + 1 用心讨论,共获提升!
kge369 + 1 + 1 我很赞同!
天天404 + 2 + 1 用心讨论,共获提升!
笙若 + 1 + 1 谢谢@Thanks!
wushaominkk + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
羽小时 + 1 + 1 我很赞同!
黄蜀黍 + 1 + 1 我很赞同!
吹风哥 + 1 + 1 做好板凳了 继续听讲
tiantianlan2018 + 1 + 1 用心讨论,共获提升!
bmwgtr + 1 + 1 热心回复!
海天一色001 + 1 + 1 热心回复!
angelwang + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

黄蜀黍 发表于 2019-7-12 11:25
微信图片_20190712112419.png
这个网站可以免费下载而且不用账号

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lyn2018 + 1 + 1 热心回复!

查看全部评分

 楼主| laoxiaodiao 发表于 2019-7-16 22:50
 楼主| laoxiaodiao 发表于 2019-7-30 08:51
本帖最后由 laoxiaodiao 于 2019-7-30 08:52 编辑
我的盘由我做主 发表于 2019-7-22 22:33
楼主,想问问python好学吗?

其实学东西不用去纠结好不好学,你先去学了,肯定会其乐无穷的哟,如果您有其他语言的基础,你可以稍微过一下python的基础语法,如果没有,那么你得要好好的把python的语法给学好,理解清楚,再学完基础语法之后结合自己感兴趣的小项目来操作,我发的这些帖子都是我自己感兴趣的小项目,大家一起学习。在自学的过程中如果有不懂的一定要学会多问度娘,或者翻书,那么你一定进步的很快。总的一句话来说就是在学一门语言之前不要纠结他好不好学,每种语言都会让你对编程的世界有不一样的认识个人愚见
 楼主| laoxiaodiao 发表于 2019-7-24 17:07
kljjqrcw522 发表于 2019-7-24 15:38
楼主,这段代码还是以帐户为先的,限制帐户的话还是不能用的。

对的,我现在还没有能力去实现无账号下载,我请教了一个老前辈,他说网上这些能够下载源文档的大部分都是买百度的VIP账号,然后开发出网站来下载的。然后我看了一个实现下载的(非原文档),他的原理是打开文档所在网站,然后打开elements,将不需要的元素全部去掉,然后把剩下的文档保存为pdf,我猜那些能够下载付费文档且只能下载到预览部分的原理可能就是这个。
头像被屏蔽
王星星 发表于 2019-7-12 08:28
提示: 作者被禁止或删除 内容自动屏蔽
xgl4500 发表于 2019-7-12 07:06
感谢楼主分享
 楼主| laoxiaodiao 发表于 2019-7-12 18:47
cursor3946 发表于 2019-7-12 12:52
楼主,我按照你的txt里的源码运行之后,能登陆网页版,但是监听不到消息,对于指定群聊的消息没有任何反应 ...

感谢你,昨天太晚了,没有运行,在txt文件中,少了一个函数,直接网盘
链接: https://pan.baidu.com/s/1g7QOOHujQkjv3kaYzxfnyg 提取码: aq25 复制这段内容后打开百度网盘手机App,操作更方便哦

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
qingsduwu + 1 + 1 用心讨论,共获提升!

查看全部评分

error3 发表于 2019-7-12 05:20
看得一头雾水。先收藏了,有空仔细再看一遍
bmwgtr 发表于 2019-7-12 07:18
不错,感谢分享~~ 支持原创,学习了
会放电的皮卡丘 发表于 2019-7-12 07:25
很厉害,我也在学习python,向你看齐
sp21000 发表于 2019-7-12 07:56
文字太多了,没有太看明白
熊猫 发表于 2019-7-12 08:03
差点看成80元
坐久落花多 发表于 2019-7-12 08:06
这个是挺不错的
谢谢分享
wu8511128 发表于 2019-7-12 08:16
不用,但是还是感谢下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 23:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表