钉钉脚本编写和和思路
思路
![]()
生成证书
![]()
![]()
![]()
我叫代理设置成自己的物理机的ip,应为我钉钉是在虚拟机里面测试的
![]()
钉钉代理设置下面这样,直接设置系统代理掺杂了其他应用的数据包分析去了比较麻烦
![]()
我测试可以看见burp是可以进行抓取到数据包的
![]()
发现登录的时候他报错了,他登录的时候可能不是用的http/https协议没有办法啊
![]()
但是他这个代理不能输出地址端口
![]()
我就怀疑是能不能设置系统代理他就可以了,发就是设置系统代理,然后他就会自动填充
![]()
测试还是可以连接到服务器端
![]()
但是登录还登录不上去
![]()
登录应该是用的这个,burp应该是抓取不了的
![]()
![]()
![]()
![]()
![]()
![]()
设置手机wifi代理
![]()
还是抓不到
![]()
burp我是真的想不到有什么方法可以获取数据包了
这个软件是
![]()
使用浏览器代理
![]()
可以正常登录
![]()
![]()
查看一下原文
![]()
分析一下文件,可以看见这个请求的参数非常多
发现每次请求头里面都有一个Referer ,感觉赞肯定给这个有关
![]()
看一下,发现是一个直播
![]()
他应该是一个m3u8直播的,只是判断,可以看见下面请求里面有一个http://dtlive-sz-hls.dingtalk.com/live/fe97ec3a-96ac-498e-a6c3-885ff4498980.m3u8?auth_key=1633855156-0-0-d5b07d9b69bf93d1f51553a6a8fa920d&cid=a7ab5d9d3b265c490b83128c67899de4&token2=b4a83c70b58ad52e3e6f0c5b873b348f9XPSIyZYnsdWzV4zbkAvnoTMJEscAWVZ90m8380nhi21PfKkKTtYJ33Z-YDjEY0Np6YSfi0wYCNslAra0aqxPAqYX5wcpaTn58FUxWF_URI=
1 | GET /r.png?f=b&uid=8b95c60b-3b5f-40f9-b44f-76abaa27f883&userNick=614223570×=1&_t=8244137689&tag=6.0.26-Release.9039987&type=log&msg=[live-playback-room][/r/Adaptor/LiveStream/getLiveDetail success][response]{"liveInfo":{"liveUuid":"fe97ec3a-96ac-498e-a6c3-885ff4498980","anchorId":614223570,"title":"群直播 2021-09-10","coverUrl":"https://dtlive-sz.oss-cn-shenzhen.aliyuncs.com/cover/fe97ec3a-96ac-498e-a6c3-885ff4498980_group_live_cover.jpg","inputStreamUrl":"rtmp://dtlive-sz-push.dingtalk.com/live/fe97ec3a-96ac-498e-a6c3-885ff4498980?auth_key=1633855051-0-0-114d4efc70cb3d8df0550c9e5a6462d1","status":1,"isLandscape":0,"codeLevel":3,"isLiveAbord":0,"publicLandingUrl":"https://h5.dingtalk.com/group-live-share/index.htm?encCid=a7ab5d9d3b265c490b83128c67899de4&liveUuid=fe97ec3a-96ac-498e-a6c3-885ff4498980","viewerShareType":0,"disableThumbup":false,"linkMicType":0,"anchorReportStatusList":[],"anchorDevice":"Android","enableH265":false,"liveInteractionSetting":{"disableThumbup":false,"ext":{}},"recordSeenLevel":0},"statistics":{"memberCount":0,"pv":6,"uv":0,"onlineCount":0,"praiseCount":0,"messageCount":0,"viewerCount":0},"liveUrlHls":"http://dtlive-sz-hls.dingtalk.com/live/fe97ec3a-96ac-498e-a6c3-885ff4498980.m3u8?auth_key=1633855156-0-0-d5b07d9b69bf93d1f51553a6a8fa920d&cid=a7ab5d9d3b265c490b83128c67899de4&token2=b4a83c70b58ad52e3e6f0c5b873b348f9XPSIyZYnsdWzV4zbkAvnoTMJEscAWVZ90m8380nhi21PfKkKTtYJ33Z-YDjEY0Np6YSfi0wYCNslAra0aqxPAqYX5wcpaTn58FUxWF_URI="}&sampling=1&monitorType=prodCommonXflush&monitorGroupType=live&spm=dd.live.public.share&sdkType=dingRetcodeSdk HTTP/1.1 |
说明这个fe97ec3a-96ac-498e-a6c3-885ff4498980和上面的liveUuid就是判断直播的重要的东西
是可以直接就一点直播的内容给下载下来的
![]()
1 | GET /r.png?f=b&uid=8b95c60b-3b5f-40f9-b44f-76abaa27f883&userNick=614223570×=1&_t=82441376729&tag=6.0.26-Release.9039987&api=https://lv.dingtalk.com/config/getH5LiveConfig&issucess=true&delay=2565&msg=200&detail=success&type=retcode&sampling=1&monitorType=prodCommonXflush&monitorGroupType=live&logBizType=ddVideoLogSdk&spm=dd.live.public.share&sdkType=dingRetcodeSdk HTTP/1.1 |
1 | https://lv.dingtalk.com/interaction/createLike?uuid=liveUuid&count=要刷的数量 |
自己写了一个多线程get请求简单的脚本,下面这个脚本大概1秒就千万赞
1 | import threading |
![]()
最笨的方法
屏幕操作
获得屏幕分辨率
1 | print(pyautogui.size()) |
![]()
![]()
屏幕截图
1 | a = pyautogui.screenshot() |
![]()
![]()
位置定位
locateOnScreen方法可以获得图片的位置
1 | number7_location = pyautogui.locateOnScreen('要定位的图片') |
演示
下面我就获得我的电脑的wifi的这个地方的位置
![]()
先叫这个图给截图下来
![]()
1 | import pyautogui |
![]()
鼠标操作
鼠标位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20print(pyautogui.position()) #获得当前的鼠标的位置if __name__ == '__main__':
banner_1 = r"""
___ _ _ ___
| __| _| | |___/ __| __ __ _ _ _ _ _ ___ _ _
| _| || | | |___\__ \/ _/ _` | ' \| ' \/ -_) '_|
|_| \_,_|_|_| |___/\__\__,_|_||_|_||_\___|_|
"""
def choose_color_2(cb):
i = random.choice(range(4))
if i == 0:
return "\033[1;32m{}\033[0m".format(cb)
elif i == 1:
return "\033[1;31m{}\033[0m".format(cb)
elif i == 2:
return "\033[1;33m{}\033[0m".format(cb)
elif i == 3:
return "\033[1;36m{}\033[0m".format(cb)
鼠标点击
1
pyautogui.click(点击的位置x是int类型的,点击的位置y是int类型的)
1
pyautogui.click(点击的位置x是int类型的,点击的位置y是int类型的,button='left') # 单击左键
1
pyautogui.click(点击的位置x是int类型的,点击的位置y是int类型的,button='middle') # 单击中间
1
pyautogui.click(点击的位置x是int类型的,点击的位置y是int类型的,button='right') # 单击右键
1
pyautogui.doubleClick(点击的位置x是int类型的,点击的位置y是int类型的) # 指定位置,双击左键
1
pyautogui.middleClick(点击的位置x是int类型的,点击的位置y是int类型的) # 指定位置,双击中键
1
pyautogui.rightClick(点击的位置x是int类型的,点击的位置y是int类型的) # 指定位置,双击右键
鼠标控制拖动事件
按当指定位置拖动动
1
pyautogui.dragTo(点击的位置x是int类型的,点击的位置y是int类型的,duration=拖动需要的时)
按当前鼠标位置拖动
1
pyautogui.dragTo(点击的位置x是int类型的,点击的位置y是int类型的,duration=拖动需要的时间)
鼠标点击释放
1
2pyautogui.mouseDown() # 鼠标的按下
pyautogui.mouseUp() # 鼠标的放开
下面是我写的简单的一个点赞的脚本
代码
1 | import pyautogui |

