吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7247|回复: 21
上一主题 下一主题
收起左侧

[Python 转载] 基于Python的微信表情轰炸器

[复制链接]
跳转到指定楼层
楼主
人二 发表于 2021-2-19 15:56 回帖奖励

基于Python的微信表情轰炸器

写在前面

  • 最近闲的无聊,在吾爱上看到一个贴子-《为了防止女朋友怼我,我就先用python爬了3600个怼人表情包等她来战!》,然后就试试能不能写一个成品出来,于是就有了这篇帖子。

使用方法

  • 在表情词里输入你想发送的表情,并输入轰炸次数,再点击开始轰炸,将鼠标移至微信对话框就好了。
    注意:点击开始轰炸后,界面可能会卡一会儿,因为在爬取表情包。

困惑

  • 红色提示部分原本是想做成倒计时的,结果在点击开始轰炸后,会先进行轰炸,再跳出倒计时提示,索性就让它一直显示了,如果你有好的解决办法请告诉我,源代码贴上。

源代码


from pynput.keyboard import Key,Controller as key_ct #键盘控制
from pynput.mouse import Button,Controller as mouse_ct #控制鼠标
import win32clipboard as w
from PIL import Image
from io import BytesIO
import time #导入时间包
import os
import requests
from lxml import etree
import tkinter as tk
import urllib.parse
#输入数据
def inputURL(str,count):
    str=urllib.parse.quote(str)
    url = "http://www.doutula.com/search?type=photo&more=1&keyword=" + str +"&page="
    # print(url+count)
    get_images(url,int(count))
# def foo():
#     global sec
#     clock=labelText.after(1000,foo)          #延迟调用foo,每1000毫秒一次
                             
#     labelText["fg"]="white"
#     labelText["bg"] = "red"
#     if sec==0:                         #如果倒计时为零时
#         labelText.after_cancel(clock)        #取消after时钟函数
#         labelText.place_forget()
#         sec = 5
#     else:
#         labelText.place(x=150, y=110)
#         labelText['text']="你还有"+str(sec)+"秒点击微信聊天对话框!!!"           #设置按钮显示文字倒计时
#         sec=sec-1 #倒计时
#提醒
# def countDown(entryInput1,entryInput2):
#     labelText.after(1000,foo)                #每1000毫秒调用一次foo
def initGui():
    win.title("微信表情轰炸器")
    #设置窗口大小
    win.geometry('500x150')
    #设置窗口是否可变长、宽,True:可变,False:不可变
    win.resizable(width=False, height=False)
    #输入窗口
    tk.Label(win, text='请输入表情词:').place(x=50, y=30)
    tk.Label(win, text='请输入轰炸次数:').place(x=260, y=30)
    inputCode1 = tk.StringVar()
    inputCode2 = tk.StringVar()
    entryInput1 = tk.Entry(win, width=15, textvariable=inputCode1)
    entryInput1.place(x=135, y=32)
    entryInput2 = tk.Entry(win, width=10, textvariable=inputCode2)
    entryInput2.place(x=360, y=32)
    labelText = tk.Label(win,fg="white",bg="red",text="点击开始轰炸后,你有5秒的时间将鼠标移至微信对话框!!!")
    labelText.place(x=100, y=110)
    tk.Button(win, text='开始轰炸', width=6, command=lambda: [inputURL(entryInput1.get(),entryInput2.get())]).place(x=230, y=70)
    #窗口置顶
    win.wm_attributes('-topmost',True)
    win.mainloop()
    return 
def mouse_click():
    mouse=mouse_ct()         
    mouse.press(Button.left)   #按压鼠标左键
    mouse.release(Button.left) #松开鼠标左键
#图片连发
def send_images():
    time.sleep(3)
    keyboard=key_ct() #获取键盘权限
    keyboard.press(Key.ctrl)
    keyboard.press('v')
    keyboard.release('v')
    keyboard.release(Key.ctrl)
    mouse_click() #鼠标左键点击
    time.sleep(0.5)   #休眠1秒
    keyboard.press(Key.enter)  #按下回车键
    keyboard.release(Key.enter) #松开回车键   
def InitMsg(msg):
    img = Image.open(msg)
    f=BytesIO()                # 当然保存成文件再读取也是可以的,只是这样更快
    img.convert('RGB').save(f,'BMP') # 转换成位图
    data=f.getvalue()[14:]   # 至于为啥要舍去文件头的14个字节看百度
    f.close()
    # 打开剪贴板
    w.OpenClipboard()
    # 清空剪贴板
    w.EmptyClipboard()
    # 设置剪贴板内容
    w.SetClipboardData(w.CF_DIB, data)
    # 关闭剪贴板
    w.CloseClipboard()
def get_images(url,count):
    for i in range(1,30): 
        url = url + str(i)
        headers ={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63 "}
        res = requests.get(url,headers = headers).text
        res_xpath = etree.HTML(res)
        # 用xpath提取表情包的具体网址
        bqb_urls = res_xpath.xpath('//*[@id="search-result-page"]/div/div/div[2]/div/div[1]/div[1]/div//img/@data-original')
        for bqb_url in bqb_urls:
            tempImg = BytesIO(requests.get(bqb_url).content)
            InitMsg(tempImg)
            send_images()
            count= count-1
            if count == 0:
                break
        if count == 0:
                break
if __name__=='__main__':
    #窗口
    win = tk.Tk()
    initGui()

体验地址

免费评分

参与人数 4吾爱币 +3 热心值 +3 收起 理由
fengshengshou + 1 这个帅气了
rplyl1988 + 1 热心回复!
Laney + 1 + 1 热心回复!
TomSix + 1 + 1 用心讨论,共获提升!

查看全部评分

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

推荐
julony 发表于 2021-2-19 16:30
哥们这是不想要女朋友了是吧,给我啊,我不嫌弃啊~~
推荐
cyansto 发表于 2021-2-20 17:13
commad 增加个函数,参考下
[Python] 纯文本查看 复制代码
    
def notify():
        i = 5
        while i > 0:
            print(labelText.cget('text'))
            time.sleep(1)
            labelText['text'] = str("点击开始轰炸后,你有{}秒的时间将鼠标移至微信对话框!!!".format(i))
            i -= 1
            labelText.update()
沙发
supergm 发表于 2021-2-19 16:18
4#
 楼主| 人二 发表于 2021-2-19 16:33 |楼主
julony 发表于 2021-2-19 16:30
哥们这是不想要女朋友了是吧,给我啊,我不嫌弃啊~~

女朋友偶尔也会调皮一哈
5#
asln2001 发表于 2021-2-19 16:37
测试了一下,开始之后软件卡死了。
6#
Laney 发表于 2021-2-19 16:42
学习一下
7#
 楼主| 人二 发表于 2021-2-19 16:47 |楼主
asln2001 发表于 2021-2-19 16:37
测试了一下,开始之后软件卡死了。

嗯嗯,次数不完,就会一直卡,我也不知道咋解决
头像被屏蔽
8#
冰棍好烫啊 发表于 2021-2-19 16:48
提示: 作者被禁止或删除 内容自动屏蔽
9#
jenny95 发表于 2021-2-19 16:53
测试了下,可以轰炸
10#
bachelor66 发表于 2021-2-19 17:03
这是模拟键鼠点击???                    
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 16:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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