Telegram机器人inline_query中Axios请求Instagram报401错误排查
Instagram Reels直链请求在Telegram Bot inline_query中返回401的解决方案
你的代码在onText事件中正常工作,但在inline_query中触发401错误,核心原因大概率是Instagram的反爬机制对两种场景的请求判定不同,以下是具体排查和解决方法:
1. 修正请求URL的参数错误
你当前的URL里存在一个多余的问号:
https://www.instagram.com/p/${videoId}/?utm_source=ig_web_copy_link?&__a=1&__d=1
第二个?应该替换为&,否则会导致IG的参数解析异常,返回非预期的错误。修正后的URL:
https://www.instagram.com/p/${videoId}/?utm_source=ig_web_copy_link&__a=1&__d=1
2. 补充浏览器模拟请求头
IG的反爬会检查请求的上下文信息,inline_query场景下的请求可能缺少必要的头信息,导致被判定为异常请求。添加以下头字段让请求更贴近真实浏览器:
Referer: 模拟从IG主页发起的请求Accept-Language: 补充语言偏好X-Requested-With: 标记为AJAX请求
修改后的请求代码:
let res = await axios({ method: 'get', url: `https://www.instagram.com/p/${videoId}/?utm_source=ig_web_copy_link&__a=1&__d=1`, headers: { 'Cookie': cookie, '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', 'Referer': 'https://www.instagram.com/', 'Accept-Language': 'en-US,en;q=0.9', 'X-Requested-With': 'XMLHttpRequest' } }).catch(e => console.log(e)) return { url: res?.data.items[0].video_versions[0].url, cover: res?.data.items[0].image_versions2.candidates[0].url }
3. 检查Cookie的有效性与上下文绑定
- 确保Cookie包含
sessionid、ds_user_id、csrftoken这些核心登录字段,且未过期。 - IG的Cookie可能会绑定请求的会话上下文,
inline_query的请求场景可能被判定为新会话,尝试重新获取最新的登录Cookie替换现有值。
4. 避免请求触发频率阈值
虽然日志显示仅执行一次,但inline_query可能在用户连续输入时被快速触发(即使你只处理一次),IG的后端可能仍会判定为高频请求。可以添加1-2秒的延迟再发起请求:
await new Promise(resolve => setTimeout(resolve, 1000)); // 延迟1秒 let res = await axios(/* ... 请求配置 ... */)
5. 切换更稳定的API端点
如果上述方法无效,可以尝试使用IG的移动端API端点,该端点的反爬限制相对宽松:
let res = await axios({ method: 'get', url: `https://i.instagram.com/api/v1/media/${videoId}/info/`, headers: { 'Cookie': cookie, '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', 'X-IG-App-ID': '936619743392459' // Web端固定App ID } }).catch(e => console.log(e)) return { url: res?.data.items[0].video_versions[0].url, cover: res?.data.items[0].image_versions2.candidates[0].url }
内容的提问来源于stack exchange,提问作者Bohdan
相关产品推荐
相关产品推荐

