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

使用Scrapy登录Instagram遭拦截,求可行登录方案

解决Instagram登录页面访问及Scrapy登录问题

第一步:绕过robots.txt限制

你的日志明确显示请求被robots.txt拦截,Scrapy默认会遵循网站的robots协议,直接修改配置关闭这个规则:
在Scrapy项目的settings.py中,修改:

ROBOTSTXT_OBEY = False

第二步:模拟真实请求环境

Instagram对请求特征检测严格,需要配置请求头模拟真实浏览器:

  • 在settings.py中添加自定义User-Agent(换成你常用浏览器的UA):
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
  • 确保settings.py中DOWNLOADER_MIDDLEWARES里的scrapy.downloadermiddlewares.cookies.CookiesMiddleware处于启用状态,用来维持会话。

第三步:正确的登录流程

Instagram的登录需要先获取登录页面的CSRF令牌,再提交POST请求:

def start_requests(self):
    login_url = 'https://www.instagram.com/accounts/login/'
    yield scrapy.Request(
        login_url,
        callback=self.parse_login,
        headers={'User-Agent': self.settings.get('USER_AGENT')}
    )

def parse_login(self, response):
    # 提取CSRF令牌,优先从meta标签取,没有就从cookie里拿
    csrf_token = response.xpath('//meta[@name="csrf-token"]/@content').get()
    if not csrf_token:
        csrf_token = response.cookies.get('csrftoken')
    
    # 构造登录POST数据
    login_data = {
        'username': '你的Instagram账号',
        'password': '你的Instagram密码',
        'csrfmiddlewaretoken': csrf_token
    }
    
    # 提交登录请求,注意用ajax接口
    yield scrapy.FormRequest(
        url='https://www.instagram.com/accounts/login/ajax/',
        formdata=login_data,
        callback=self.parse_after_login,
        headers={
            'User-Agent': self.settings.get('USER_AGENT'),
            'X-CSRFToken': csrf_token,
            'X-Requested-With': 'XMLHttpRequest'
        }
    )

def parse_after_login(self, response):
    # 检查登录结果,Instagram返回JSON格式响应
    result = response.json()
    if result.get('authenticated'):
        # 登录成功,跳转目标页面爬取评论
        yield scrapy.Request('目标帖子URL', callback=self.parse_comments)
    else:
        self.logger.error('登录失败:%s', result.get('message'))

额外注意事项

  • 控制请求频率:在settings.py设置DOWNLOAD_DELAY = 3,避免频繁触发反爬机制。
  • 使用代理IP:如果IP被限制,配置代理中间件切换IP,降低账号或IP被封禁的风险。
  • 处理验证环节:若遇到验证码或两步验证,需手动处理或借助验证码识别服务,这会增加爬取的复杂度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:43:11