社交媒体爬虫


twitter

twitter发文

python
import tweepy

# 创建 Tweepy 客户端
client = tweepy.Client(
    bearer_token=account.bearer_token,
    consumer_key=account.api_key,
    consumer_secret=account.api_key_secret,
    access_token=account.access_token,
    access_token_secret=account.access_token_secret,
    wait_on_rate_limit=True
)

try:
    # 发布推文
    response = client.create_tweet(text=request.content)
    tweet_id = response.data['id']
    return {
        "success": True,
        "tweet_id": tweet_id,
        "message": "推文发布成功"
    }
except tweepy.TweepyException as e:
    return f"发布推文失败:{e}"


# 使用代理发推文,待验证
# tweepy.API 支持代理参数
auth = tweepy.OAuth1UserHandler(
    account.api_key,
    account.api_key_secret,
    account.access_token,
    account.access_token_secret
)

api = tweepy.API(
    auth,
    proxy=f'http://{PROXY_USERNAME}:{PROXY_PASSWORD}@{PROXY_HOST}:{PROXY_PORT}',
    wait_on_rate_limit=True
)
# 使用 API 发推
api.update_status(request.content)

client.search_recent_tweets 搜索

Telegram(待验证)

Telethon 个人号/群聊全功能(MTProto 客户端)
登录:https://my.telegram.org/auth
→ API Development Tools 申请 api_id + api_hash

pip install telethon
最小可运行示范

python
from telethon import TelegramClient, events                   # 导入客户端类与事件装饰器
import asyncio                                                # 标准库:异步事件循环

# ----------------- 账户配置 -----------------
api_id   = 123456                                            # 替换为你的 api_id
api_hash = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'                # 替换为你的 api_hash
session  = 'session'                                         # 会生成本地会话文件
GROUP_NAME = '测试群'                                         # 需要监听的群组名称或 chat_id
TARGET_USER = '@target_username'                             # 启动时要主动私聊的对象
INIT_TEXT  = '您好,这是一条测试消息'                          # 启动时发送的问候语
# ------------------------------------------------------------

client = TelegramClient(session, api_id, api_hash)            # 创建客户端实例

# 1️⃣ 监听群聊消息并回复
@client.on(events.NewMessage(chats=GROUP_NAME))               # 只监控指定群
async def group_handler(event):                               # 异步事件回调
    msg = event.message.message                               # 获取文本内容
    if 'ping' in msg.lower():                                 # 简单匹配关键词
        await event.reply('pong(来自机器人)')                # 群内回复

# 2️⃣ 监听所有私聊消息并回复
@client.on(events.NewMessage(incoming=True))                  # 监听所有入站消息
async def private_handler(event):
    if not event.is_private:                                  # 过滤掉群消息
        return                                                # 不是私聊则忽略
    text = event.raw_text                                     # 获取原始文本
    if '你好' in text:                                        # 判断关键字
        await event.respond('你好!有什么能帮您?')             # 私聊回复

# 3️⃣ 启动后给指定对象发送一条消息
async def send_initial_message():                             # 定义异步发送函数
    await client.send_message(TARGET_USER, INIT_TEXT)         # 主动发送私聊/群消息

# -------------------- 入口 --------------------
async def main():
    await send_initial_message()                              # 启动即发送问候
    await client.run_until_disconnected()                     # 保持长连接

with client:                                                  # 自动完成登录流程
    asyncio.run(main())                                       # 运行主协程

WhatsApp 待验证

实现渠道:
WhatsApp Cloud API(官方商业号) Cloud API 需要 Meta Business + 专用号码,可发模板消息、接受会话消息,合法自动化

逆向渠道:
Whatsmeow一个使用go基于whatsmeow的逆向包
neonize是Whatsmeow的python封装
pip install neonize
最小示范

python
from neonize.client import NewClient
from neonize.events import MessageEv, GroupMessageEv, event

BOT = NewClient("session")                 # 会在当前目录生成 session.db

@BOT.event
def on_ready(c, _):                        # 连接成功事件
    print("✅ 已连接 WhatsApp!")

@BOT.event
def on_message(c: NewClient, ev: MessageEv):          # 私聊
    if ev.message.conversation.lower() == "ping":
        c.reply_message("pong", ev.message)

@BOT.event
def on_group_message(c: NewClient, ev: GroupMessageEv):  # 群聊
    txt = ev.message.conversation or ""
    if txt.lower() == "ping":
        c.reply_message("pong (群)", ev.message)

def main():
    # 启动后先给自己发一句话作演示
    BOT.connect()                                   # 首次会显示二维码,手机扫码登录
    me = BOT.get_self()                             # 自己的 JID
    BOT.send_message(me, "机器人已上线~")             # 主动发私信
    event.wait()                                    # 阻塞主线程

if __name__ == "__main__":
    main()

# 中文注释:
# 1) 扫码后即获完整个人号权限;监听私聊/群消息,收到“ping”就回“pong”
# 2) Neonize 内部会捕获 Flood-Wait,如需大批量发消息请自行 await asyncio.sleep(err.retry_after)