You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已实现Messenger登录,如何用Python requests库给Instagram用户批量发消息

实现登录Messenger后向Instagram用户批量发消息(requests版)

核心前提

确保你的登录代码已通过requests.Session()维持有效会话(保存了登录后的Cookie和验证Token)。Instagram用户在Messenger中属于跨平台联系人,必须先获取其对应的**线程ID(thread ID)**才能发送消息。

具体实现步骤

1. 读取本地目标用户列表

假设你的target_users.txt文件每行一个Instagram用户名,先读取为列表:

def load_target_users(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        return [line.strip() for line in f if line.strip()]

target_users = load_target_users('target_users.txt')

2. 获取Instagram用户的Messenger线程ID

调用Messenger的搜索接口,根据用户名查找对应线程。需从登录后的页面源码中提取x-fb-lsd、x-fb-xs、queryHash等验证参数:

def get_instagram_thread_id(session, username):
    # 从已登录会话的Cookie或页面源码中提取以下参数
    lsd_token = session.cookies.get('lsd')
    xs_token = session.cookies.get('xs')
    # queryHash需从浏览器开发者工具抓取真实搜索接口的哈希值(Facebook更新可能变化)
    query_hash = "你的queryHash"

    search_url = "https://www.messenger.com/api/graphqlbatch/"
    payload = {
        "queries": f'[{"operationName":"SearchUserQuery","variables":{"query":"{username}","limit":10,"filters":{"contact_point":"instagram"},"scale":2},"queryHash":"{query_hash}"}]'
    }
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'X-FB-LSD': lsd_token,
        'X-FB-XS': xs_token,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }

    response = session.post(search_url, data=payload, headers=headers)
    data = response.json()

    # 解析返回结果提取线程ID
    for item in data[0]['data']['search']['edges']:
        if item['node']['username'] == username:
            return item['node']['thread']['id']
    return None

3. 发送消息到指定线程

拿到线程ID后,构造发送消息的POST请求:

def send_message_to_thread(session, thread_id, message):
    lsd_token = session.cookies.get('lsd')
    xs_token = session.cookies.get('xs')
    fb_dtsg = session.cookies.get('fb_dtsg')  # 从页面源码提取该参数

    send_url = "https://www.messenger.com/messaging/send/"
    payload = {
        "client": "web_messenger",
        "action_type": "ma-type:user-generated-message",
        "thread_id": thread_id,
        "text": message,
        "fb_dtsg": fb_dtsg,
        "lsd": lsd_token
    }

    headers = {
        'X-FB-XS': xs_token,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }

    response = session.post(send_url, data=payload, headers=headers)
    return response.status_code == 200

4. 整合流程按顺序发送

# 假设你的登录函数已初始化会话:logged_in_session = your_login_function()
message_content = "你好,这是来自Python脚本的测试消息"

for username in target_users:
    thread_id = get_instagram_thread_id(logged_in_session, username)
    if not thread_id:
        print(f"未找到用户 {username} 的线程ID")
        continue

    success = send_message_to_thread(logged_in_session, thread_id, message_content)
    print(f"向 {username} 发送消息{'成功' if success else '失败'}")

    # 控制请求频率,避免触发反爬机制
    import time
    time.sleep(5)

重要注意事项

  • 动态获取验证参数:lsd、xs、fb_dtsg、queryHash不能硬编码,必须从登录后的页面或接口响应中提取,否则请求会被拦截。
  • 频率控制:必须添加延迟(5-10秒),否则账号可能被临时封禁或限制。
  • 合规风险:批量发送消息可能违反Facebook服务条款,建议用测试账号调试,避免主账号受限。

内容的提问来源于stack exchange,提问作者Hulusi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 14:15:35