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

如何实现instagrapi登录时邮箱验证码流程的自动化?

解决Instagrapi登录验证码自动化问题

核心方案

Instagrapi支持通过回调函数处理验证码验证,同时保存登录会话能避免重复触发验证流程,这两个点结合就能实现自动化登录。

具体实现步骤

1. 编写验证码自动获取函数

你需要实现一个函数来自动读取邮箱里的Instagram验证码。以下是基于IMAP协议的示例框架,你可以根据自己的邮箱服务商调整细节:

def get_verification_code(username):
    # 连接邮箱服务器(以QQ邮箱为例,其他邮箱替换对应的IMAP地址)
    import imaplib
    import email
    import re
    from email.header import decode_header

    mail = imaplib.IMAP4_SSL("imap.qq.com")
    # 这里填你的邮箱账号和授权码(不是登录密码,部分邮箱需要单独生成)
    mail.login("your_email@qq.com", "your_email_auth_code")
    mail.select("inbox")

    # 搜索来自Instagram安全邮箱的最新邮件
    result, data = mail.search(None, '(FROM "security@mail.instagram.com")')
    latest_email_id = data[0].split()[-1]
    result, data = mail.fetch(latest_email_id, "(RFC822)")
    
    raw_email = data[0][1].decode("utf-8")
    # 从邮件内容里提取6位数字验证码
    code_match = re.search(r'\b\d{6}\b', raw_email)
    if code_match:
        return code_match.group()
    return None

2. 登录时绑定验证码回调

修改你的登录代码,把上面的函数传给verification_code_callback参数,同时保存会话文件:

from instagrapi import Client

def get_verification_code(username):
    # 这里是上面写的验证码获取逻辑
    # ...(省略具体实现)

ACCOUNT_USERNAME = "你的账号"
ACCOUNT_PASSWORD = "你的密码"

cl = Client()
# 登录时自动调用验证码函数
cl.login(ACCOUNT_USERNAME, ACCOUNT_PASSWORD, verification_code_callback=get_verification_code)
# 保存会话到本地文件,下次登录直接复用
cl.dump_settings("ig_session.json")

user_id = cl.user_id_from_username("adw0rd")
medias = cl.user_medias(user_id, 20)

3. 后续登录加载会话跳过验证

之后运行代码时,优先加载已保存的会话,只有会话失效时才重新触发验证码流程:

from instagrapi import Client

def get_verification_code(username):
    # 验证码获取逻辑
    # ...(省略具体实现)

ACCOUNT_USERNAME = "你的账号"
ACCOUNT_PASSWORD = "你的密码"

cl = Client()
try:
    # 尝试加载本地会话
    cl.load_settings("ig_session.json")
    cl.login(ACCOUNT_USERNAME, ACCOUNT_PASSWORD)
except Exception:
    # 会话失效时重新登录并保存新会话
    cl.login(ACCOUNT_USERNAME, ACCOUNT_PASSWORD, verification_code_callback=get_verification_code)
    cl.dump_settings("ig_session.json")

user_id = cl.user_id_from_username("adw0rd")
medias = cl.user_medias(user_id, 20)

注意事项

  • 不同邮箱的IMAP配置和授权方式不同,比如Gmail需要开启IMAP并使用应用专用密码
  • 频繁自动化操作可能触发Instagram风控,建议控制请求频率,避免账号被限制
  • 会话文件包含敏感登录信息,务必妥善保管,不要随意分享

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:20:34