运行Instagram自动发私信JS脚本出现AJAX 403错误如何修复
Instagram控制台自动发私信403错误修复方案
返回403是因为Instagram API对请求的参数、头信息校验失败,针对你当前的代码,修改以下几点即可解决:
- 替换错误的_uuid参数:你当前赋值的
Date.now()不符合Instagram要求的UUID v4格式,新增UUID生成函数替换该参数值。 - 补充必填请求头:你缺少3个接口强制校验的请求头,需要在发送请求前添加:
x-csrftoken:值和你从cookie中拿到的csrftoken一致x-ig-app-id:固定值为936619743392459,是网页端Instagram的官方应用IDUser-Agent:要和你请求参数里的设备标识匹配,不要混用网页端环境和安卓端参数
- 修正recipient_users格式:不要手动拼接JSON字符串,用
JSON.stringify生成避免转义错误 - 统一设备标识逻辑:如果是在浏览器网页端运行,不需要额外加安卓前缀的device_id,直接用符合规范的UUID作为设备标识即可,避免参数不匹配触发校验失败
修复后完整代码
function getCookie(cname) { let name = cname + "="; let decodedCookie = decodeURIComponent(document.cookie); let ca = decodedCookie.split(';'); for(let i = 0; i <ca.length; i++) { let c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } // 新增UUID v4生成函数 function generateUUID() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } var deviceID = generateUUID(); // 替换为你要发送的目标用户ID var user = 192417402; var formData = new FormData(); formData.append("csrftoken", getCookie('csrftoken')); formData.append("device_id", deviceID); formData.append("_uuid", generateUUID()); formData.append("recipient_users", JSON.stringify([[String(user)]])); formData.append("client_context", Date.now().toString()); formData.append("text", 'aaaaaaaa'); var xhr = new XMLHttpRequest(); xhr.open("POST", "https://i.instagram.com/api/v1/direct_v2/threads/broadcast/text/"); xhr.withCredentials = true; // 添加必填请求头 xhr.setRequestHeader('x-csrftoken', getCookie('csrftoken')); xhr.setRequestHeader('x-ig-app-id', '936619743392459'); xhr.setRequestHeader('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'); xhr.send(formData);
注意:Instagram对非官方客户端的自动化操作风控严格,频繁调用该接口可能导致账号被限流、功能限制甚至永久封禁,仅建议用于个人测试用途。
内容的提问来源于stack exchange,提问作者taher
相关产品推荐
相关产品推荐

