贴吧私信自动群发神器,百度贴吧群发批量私信脚本插件,python框架分享

简介: 这个贴吧私信群发工具包含三个主要文件:主程序、配置文件和入口文件。主程序实现了登录

下载地址:https://www.pan38.com/yun/share.php?code=JCnzE 提取密码:1133

这个贴吧私信群发工具包含三个主要文件:主程序、配置文件和入口文件。主程序实现了登录、获取好友列表、发送私信等核心功能,并加入了防封策略。使用时请遵守贴吧规则,合理设置发送频率和数量。

import requests
import time
import random
import json
from bs4 import BeautifulSoup
import re
import os
import hashlib
from fake_useragent import UserAgent

class TiebaSpammer:
def init(self, username, password):
self.session = requests.Session()
self.ua = UserAgent()
self.username = username
self.password = password
self.cookies = None
self.headers = {
'User-Agent': self.ua.random,
'Referer': 'https://tieba.baidu.com/',
'Host': 'tieba.baidu.com',
'Connection': 'keep-alive'
}
self.login_url = 'https://passport.baidu.com/v2/api/?login'
self.message_url = 'https://tieba.baidu.com/mo/q/newmoindex'
self.token_pattern = re.compile(r"name='token' value='(.*?)'")
self.captcha_url = 'https://passport.baidu.com/cgi-bin/genimage?'

def login(self):
    # 获取登录token
    login_page = self.session.get('https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3')
    token_match = self.token_pattern.search(login_page.text)
    if not token_match:
        raise Exception("获取token失败")
    token = token_match.group(1)

    # 构造登录参数
    login_data = {
        'username': self.username,
        'password': self.password,
        'token': token,
        'tpl': 'mn',
        'apiver': 'v3',
        'tt': str(int(time.time() * 1000)),
        'codestring': '',
        'isPhone': 'false',
        'staticpage': 'https://passport.baidu.com/static/passpc-account/html/v3Jump.html',
        'loginType': '1',
        'callback': 'parent.bd__pcbs__ra48vi'
    }

    # 发送登录请求
    response = self.session.post(self.login_url, data=login_data, headers=self.headers)
    if 'err_no=0' in response.text:
        print("登录成功")
        self.cookies = response.cookies.get_dict()
        return True
    else:
        print("登录失败:", response.text)
        return False

def get_friends_list(self, page=1):
    friends = []
    params = {
        'pn': page,
        'type': 'friend'
    }
    response = self.session.get('https://tieba.baidu.com/mo/q/contact/list', params=params, headers=self.headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    items = soup.find_all('div', class_='list_item')
    for item in items:
        name = item.find('span', class_='name').text.strip()
        uid = item.find('input', {'name': 'uid'})['value']
        friends.append({'name': name, 'uid': uid})
    return friends

def send_private_message(self, uid, content):
    data = {
        'content': content,
        'to_uid': uid,
        'from_uid': '',
        'fid': '',
        'tid': '',
        'type': '1',
        'anonymous': '0',
        'is_comment': '0'
    }
    response = self.session.post(self.message_url, data=data, headers=self.headers)
    if response.json().get('err_no') == 0:
        print(f"发送成功: {uid}")
        return True
    else:
        print(f"发送失败: {response.text}")
        return False

def batch_send_messages(self, uids, content, delay=5, max_per_day=50):
    sent_count = 0
    for uid in uids:
        if sent_count >= max_per_day:
            print("达到每日发送上限")
            break

        if self.send_private_message(uid, content):
            sent_count += 1
            sleep_time = delay + random.uniform(-1, 1)
            print(f"等待 {sleep_time:.2f} 秒后继续...")
            time.sleep(sleep_time)

def anti_ban_strategy(self):
    # 随机更换User-Agent
    self.headers['User-Agent'] = self.ua.random
    # 随机延迟
    time.sleep(random.uniform(1, 3))
    # 随机访问其他页面
    random_page = random.choice(['https://tieba.baidu.com/f?kw=%E7%99%BE%E5%BA%A6', 
                               'https://tieba.baidu.com/f?kw=python'])
    self.session.get(random_page, headers=self.headers)

def run(self, message_content, max_friends=100):
    if not self.login():
        return

    all_friends = []
    page = 1
    while len(all_friends) < max_friends:
        friends = self.get_friends_list(page)
        if not friends:
            break
        all_friends.extend(friends)
        page += 1
        time.sleep(2)

    print(f"获取到 {len(all_friends)} 个好友")
    uids = [friend['uid'] for friend in all_friends[:max_friends]]
    self.batch_send_messages(uids, message_content)
相关文章
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
384 0
|
4月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
455 1
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
576 0
|
4月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
280 0
|
5月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
155 1
|
5月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
249 0
|
6月前
|
API 数据安全/隐私保护 开发者
深度分析苏宁API接口,用Python脚本实现
深度分析苏宁API接口,用Python脚本实现
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
680 1
Python实用记录(十三):python脚本打包exe文件并运行
|
存储 Shell 区块链
怎么把Python脚本打包成可执行程序?
该文档介绍了如何将Python脚本及其运行环境打包成EXE可执行文件,以便在不具备Python环境的计算机上运行。首先确保Python脚本能够正常运行,然后通过安装PyInstaller并使用`--onefile`参数将脚本打包成独立的EXE文件。此外,还提供了去除命令行窗口和指定可执行文件图标的详细方法。这些步骤帮助用户轻松地将Python程序分发给最终用户。
320 3
怎么把Python脚本打包成可执行程序?
|
存储 区块链 Python
怎么把Python脚本打包成可执行程序?
最近根据用户提的需求用python做了一个小工具,但是在给客户使用的时候不能直接发送python文件,毕竟让客户去安装python环境,那就离了大谱了。所以这时候就需要把多个py文件带着运行环境打包成EXE可执行文件。
怎么把Python脚本打包成可执行程序?

推荐镜像

更多