微博私信群发工具,微博私信脚本插件,微博批量发私信软件【python】

92 阅读2分钟

下载地址:www.pan38.com/dow/share.p… 提取密码:1281

这是一个完整的微博私信群发工具实现,包含登录、获取粉丝列表、发送私信和批量发送功能。使用时需要替换配置信息中的用户名、密码和目标用户UID。代码实现了随机消息选择、请求延迟等功能,避免被微博检测为异常行为。

import requests import json import time import random from bs4 import BeautifulSoup

class WeiboDMBot: def init(self, username, password): self.session = requests.Session() self.headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } self.username = username self.password = password self.login_url = 'passport.weibo.cn/sso/login' self.dm_url = 'm.weibo.cn/api/chat/se…' self.followers_url = 'm.weibo.cn/api/contain…' self.base_url = 'm.weibo.cn/'

def login(self):
    login_data = {
        'username': self.username,
        'password': self.password,
        'savestate': '1',
        'r': 'https://m.weibo.cn/',
        'ec': '0',
        'pagerefer': '',
        'entry': 'mweibo',
        'wentry': '',
        'loginfrom': '',
        'client_id': '',
        'code': '',
        'qq': '',
        'mainpageflag': '1',
        'hff': '',
        'hfp': ''
    }
    
    try:
        response = self.session.post(self.login_url, data=login_data, headers=self.headers)
        if response.status_code == 200:
            result = response.json()
            if result.get('retcode') == 20000000:
                print("登录成功")
                return True
        print("登录失败")
        return False
    except Exception as e:
        print(f"登录异常: {e}")
        return False
        
def get_followers(self, uid, page=1):
    try:
        url = self.followers_url.format(uid=uid) + f"&page={page}"
        response = self.session.get(url, headers=self.headers)
        if response.status_code == 200:
            data = response.json()
            followers = data.get('data', {}).get('cards', [])
            follower_list = []
            for card in followers:
                if card.get('card_type') == 11:
                    users = card.get('user', [])
                    for user in users:
                        follower_list.append({
                            'id': user.get('id'),
                            'name': user.get('screen_name')
                        })
            return follower_list
        return []
    except Exception as e:
        print(f"获取粉丝列表异常: {e}")
        return []
        
def send_dm(self, uid, message):
    try:
        data = {
            'content': message,
            'uid': uid
        }
        response = self.session.post(self.dm_url, data=data, headers=self.headers)
        if response.status_code == 200:
            result = response.json()
            if result.get('ok') == 1:
                print(f"发送私信给 {uid} 成功")
                return True
        print(f"发送私信给 {uid} 失败")
        return False
    except Exception as e:
        print(f"发送私信异常: {e}")
        return False
        
def batch_send_dm(self, uid_list, messages, delay=5):
    success_count = 0
    for uid in uid_list:
        message = random.choice(messages)
        if self.send_dm(uid, message):
            success_count += 1
        time.sleep(delay + random.uniform(0, 2))
    print(f"批量发送完成,成功发送 {success_count}/{len(uid_list)} 条")
    
def run(self, target_uid, messages, pages=5, delay=5):
    if not self.login():
        return
        
    followers = []
    for page in range(1, pages+1):
        page_followers = self.get_followers(target_uid, page)
        followers.extend(page_followers)
        time.sleep(2)
        
    if not followers:
        print("没有获取到粉丝列表")
        return
        
    uid_list = [f['id'] for f in followers]
    self.batch_send_dm(uid_list, messages, delay)

if name == "main": # 配置信息 USERNAME = "your_weibo_username" PASSWORD = "your_weibo_password" TARGET_UID = "123456789" # 目标用户UID MESSAGES = [ "你好,很高兴认识你!", "欢迎关注我的微博~", "期待与你交流!", "感谢你的关注!", "这是我的最新动态,欢迎查看!" ]

bot = WeiboDMBot(USERNAME, PASSWORD)
bot.run(TARGET_UID, MESSAGES, pages=3, delay=10)