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

使用HTTParty请求Instagram接口时Header传递失败致403错误求助

解决HTTParty请求Instagram API返回403未授权的问题

我来帮你排查这个问题,看起来你遇到的是HTTParty请求时的请求细节和curl不一致导致的403错误,咱们一步步来解决:

1. 先修正请求协议:HTTP → HTTPS

你在HTTParty代码里用的是http://www.instagram.com,但curl请求用的是https://——Instagram会强制HTTPS访问,协议不匹配可能直接触发403拦截。先把URL改成HTTPS:

HTTParty.get("https://www.instagram.com/#{username}/?__a=1", :headers => {"x-instagram-gis" => "2830c5bff8e05b755724df2c6286f2b4"})

2. 补全必要请求头,模拟curl的请求环境

Instagram的API会验证客户端请求的完整性,curl默认会发送一系列标准请求头,而HTTParty的默认头比较简单,可能被识别为非合法客户端。你需要把curl的核心头信息加到HTTParty中:

首先可以用curl -v "https://www.instagram.com/hossamhossny/?__a=1"查看curl发送的所有头,然后复制到代码里,比如:

headers = {
  "x-instagram-gis" => "2830c5bff8e05b755724df2c6286f2b4",
  "User-Agent" => "curl/7.68.0", # 换成你本地curl的版本,或者用浏览器的User-Agent
  "Accept" => "*/*",
  "Accept-Encoding" => "gzip, deflate, br"
}

response = HTTParty.get("https://www.instagram.com/hossamhossny/?__a=1", headers: headers)

3. 确保动态生成GIS哈希的格式完全正确

如果你是动态计算x-instagram-gis值,要保证拼接的字符串和手动测试的完全一致:

# 注意拼接格式:rhx_gis值 + ":/username/",末尾的斜杠不能少
Digest::MD5.hexdigest("#{rhx_gis}:/#{username}/")

比如手动测试的是"1ba367317d3c842eb4e940f1d62b29f2:/hossamhossny/",动态生成时要确保没有少斜杠、多空格这类格式问题。

4. 携带会话Cookie(关键步骤)

curl在第一次请求主页获取rhx_gis时会自动保存Cookie,而HTTParty默认不会保留会话状态。Instagram可能会验证请求是否携带初始会话的Cookie,你需要手动管理Cookie:

# 第一步:请求主页,获取rhx_gis和会话Cookie
home_response = HTTParty.get("https://www.instagram.com/hossamhossny/")
rhx_gis = home_response.body.match(/"rhx_gis":"([^"]+)"/)[1]
cookie_jar = home_response.cookies

# 第二步:计算GIS哈希,携带Cookie发起API请求
gis_hash = Digest::MD5.hexdigest("#{rhx_gis}:/hossamhossny/")
headers = {
  "x-instagram-gis" => gis_hash,
  "User-Agent" => "curl/7.68.0"
}

api_response = HTTParty.get("https://www.instagram.com/hossamhossny/?__a=1", headers: headers, cookies: cookie_jar)

按上面的步骤调整后,应该就能和curl一样正常获取API响应了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:11:25