前言

emmm,最近一个舍友要换qq号,就面临要转移好友的问题。于是用了冲了个QQ超级会员,打算用好友克隆功能,结果不知道什么情况克隆失败了,再克隆只能下个月。能不能批量添加qq好友,这个问题应运而生。我就直接先下结论,这个问题没有完全解决。

获取好友列表

前往https://qun.qq.com/member.html登录,然后F12打开控制台,在NetWork中就可以获取。更加具体可以前往下面我附加的参考地址,我就不重复了.(卖萌)

参考自https://www.bilibili.com/read/cv10026240

进行好友批量添加

这里用到的语言是python,原因就是用起来方便一些吧。(pyautogui是真的太强了!)

from pyperclip import copy
from time import sleep
import pyautogui

def AddFriend(qq_num,nickname):
    sleep(1)
    #修改为自己的路径
    findit=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\find.png')
    sleep(1)
    pyautogui.click(findit.left-20,findit.top+findit.height/2)
    sleep(0.5)
    copy(qq_num)
    pyautogui.hotkey('ctrl','a')
    sleep(0.5)
    pyautogui.hotkey('ctrl','v')
    sleep(0.5)
    pyautogui.press('enter')
    sleep(2)
    add3=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\Add3.png')
    sleep(1)
    if add3!=None:
        pyautogui.click(add3.left+add3.width/2,add3.top+add3.height/2)
        sleep(1)
        a=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\input.png')
        sleep(1)
        if a!=None:
            sleep(0.5)
            pyautogui.click(a.left+a.width/2,a.top+a.height/2)
            copy('TryAlice')
            sleep(0.5)
            pyautogui.hotkey('ctrl','v')
            sleep(0.5)
            #pyautogui.press('enter')
            b=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\next.png')
            sleep(1)
            pyautogui.click(b.left+b.width/2,b.top+b.height/2)
            sleep(1)
        sleep(1)
        c=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\nickname.png')
        if c!=None:
            pyautogui.click(c.left+c.width/2,c.top+c.height/2)
            sleep(1)
            copy(nickname)
            pyautogui.hotkey('ctrl','v')
            sleep(0.5)
            pyautogui.press('enter')
            # 滑块验证
            sleep(2)
            pyautogui.press('enter')
            added=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\cancel.png')
            sleep(1)
            if(added!=None):
                pyautogui.click(added.left+added.width/2,added.top+added.height/2)
                sleep(2)
        else:
            print("出错了!找不到nickname")
            d=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\GB.png')
            sleep(1)
            if d!=None:
                pyautogui.click(d.left+d.width/2,d.top+d.height/2)
                sleep(1)
            else:
                print("关闭出错了,需人工操作")
        sleep(2)
        #d=pyautogui.locateOnScreen(r'C:\Users\Desktop\Script\close.png')
        #if d!=None:
        #   pyautogui.click(d.left+d.width/2,d.top+d.height/2)
    else:
        print("QQ搜素无法添加")

f=open(r'C:\Users\Futurex\Desktop\Script\list.txt',encoding = "utf-8")
lines=f.readlines()
f.close()
sleep(5)
addf=pyautogui.locateOnScreen(r'C:\Users\Futurex\Desktop\Script\Add.png')
sleep(1)
if(addf==None):
    print("未找到添加按钮!")
else:
    pyautogui.click(addf.left+addf.width-10,addf.top+addf.height/2)
    sleep(1)
    add2=pyautogui.locateOnScreen(r'C:\Users\Futurex\Desktop\Script\Add2.png')
    sleep(1)
    pyautogui.click(add2.left+add2.width/2,add2.top+add2.height/2)
    sleep(1)
    for line in lines:
        res=line.split(':')
        name=res[2]
        qq_num=res[3]
        qq_num=qq_num.split('}')[0]
        name=name.split('"')[1]
        name=name.replace(' ','')
        print(qq_num,name)
        sleep(1)
        AddFriend(qq_num,name)
        sleep(1)

其中list.txt格式类似于

2: {name: "TryAlice", uin: 2713749603}
3: {name: "XX", uin: XXXXXXXX}
4: {name: "XX", uin: XXXXXXX}
5: {name: "XXXX", uin: XXXXXXX}

当然,这是基于tim做的,原理就是,模拟手动添加好友(这东西在理想状态下用按键精灵也不错哎),说到这我就想起来,看到之前有 人用opencv玩明日方舟,网易好像也有个类似的库,emmm,跑题了。用的图片如下。
findfind.png
Add3Add3.png
inputinput.png
nextnext.png
nicknamenickname.png
cancelcancel.png
GBGB.png
AddAdd.png
Add2Add2.png

参考自https://jlkl.github.io/2019/03/22/Python_03/

结尾

明明完全模拟的手动添加,但还是收不到好友验证,绝了。 一开始偷懒用的是接口,还以为是接口的问题,后来用手工也没有受到验证,看来是腾讯给加了限制。(自闭)

对了关于添加好友时可能会弹出来的滑块验证,没有写,原因是第一次遇到了滑块验证,打算第二天写,结果第二天这个滑块验证就像消失了一样,没有弹出来。算了,懒得写了。(我躺)。感觉这篇参考用的方法很流氓。这篇挺不错,这篇也是,让我想起了遥感数字图像处理,卷积运算进行边缘提取。(绝了)

import webbrowser
str="tencent://AddContact/?fromId=30&fromSubId=1&subcmd=all&uin=2713749603"
webbrowser.open(str)

希望这篇post对有相关需求的人又所帮助,以上。