instagram/thread
instagramRead-only获取 DM 对话详情 (thread messages: text_body, sender, timestamp, content_type)
www.instagram.com
Last 7 days
0
Last 30 days
0
All time
0
instagram/thread.js
/* @meta
{
"name": "instagram/thread",
"description": "获取 DM 对话详情 (thread messages: text_body, sender, timestamp, content_type)",
"domain": "www.instagram.com",
"args": {
"thread_id": {"required": true, "description": "线程 ID(从 messages 结果的 thread_key 获取)"}
},
"capabilities": ["network"],
"readOnly": true,
"example": "bb-browser site instagram/thread 114349499961298"
}
*/
async function(args) {
if (!args.thread_id) return {error: 'Missing argument: thread_id', hint: '请提供线程 ID', action: 'bb-browser site instagram/messages'};
var csrftoken = document.cookie.split(';').map(function(c){return c.trim()}).find(function(c){return c.startsWith('csrftoken=')});
if (!csrftoken) return {error: 'Not logged in', hint: '请先在浏览器中登录 Instagram', action: 'bb-browser open https://www.instagram.com/accounts/login/'};
csrftoken = csrftoken.split('=')[1];
var fbDtsg = null;
try { fbDtsg = require('DTSGInitialData').token; } catch(e) {}
if (!fbDtsg) return {error: 'No fb_dtsg token', hint: '请刷新页面后重试', action: 'bb-browser refresh'};
var lsd = null;
try { lsd = require('LSD').token; } catch(e) {}
if (!lsd) try { lsd = require('LSDToken').token; } catch(e) {}
var docId;
['IGDThreadDetailQuery', 'IGDThreadDetailQuery.graphql'].forEach(function(name) {
try { var mod = require(name); if (mod && mod.params && mod.params.id && !docId) docId = mod.params.id; } catch(e) {}
});
if (!docId) docId = '28007469415578650';
var variables = {
thread_fbid: String(args.thread_id),
min_uq_seq_id: null,
__relay_internal__pv__IGDEnableOffMsysChatThemesQErelayprovider: false,
__relay_internal__pv__IGDInitialMessagePageCountrelayprovider: 20,
__relay_internal__pv__PolarisAIGMAccountLabelEnabledrelayprovider: false
};
var body = new URLSearchParams();
body.append('__d', 'www');
body.append('__user', '0');
body.append('__a', '1');
body.append('__comet_req', '7');
body.append('fb_dtsg', fbDtsg);
if (lsd) body.append('lsd', lsd);
body.append('fb_api_caller_class', 'RelayModern');
body.append('fb_api_req_friendly_name', 'IGDThreadDetailQuery');
body.append('server_timestamps', 'true');
body.append('variables', JSON.stringify(variables));
body.append('doc_id', docId);
var headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRFToken': csrftoken,
'X-IG-App-ID': '936619743392459',
'X-Requested-With': 'XMLHttpRequest',
'X-FB-Friendly-Name': 'IGDThreadDetailQuery'
};
if (lsd) headers['X-FB-LSD'] = lsd;
var resp = await fetch('/api/graphql', {
method: 'POST', credentials: 'include', headers: headers, body: body.toString()
});
if (!resp.ok) return {error: 'HTTP ' + resp.status, hint: '请求失败'};
var d = await resp.json();
var thread = d.data && d.data.get_slide_thread_nullable;
if (!thread) return {error: 'Thread not found', hint: '对话不存在'};
var t = thread.as_ig_direct_thread || thread;
var users = (t.users || []).map(function(u) {
return { pk: u.id, username: u.username, full_name: u.full_name, fbid: u.interop_messaging_user_fbid || null };
});
var senderMap = {};
users.forEach(function(u) { if (u.fbid) senderMap[u.fbid] = u.username; });
if (t.viewer && t.viewer.interop_messaging_user_fbid) {
senderMap[t.viewer.interop_messaging_user_fbid] = t.viewer.username || '(me)';
}
var msgEdges = (t.slide_messages && t.slide_messages.edges) || [];
var messages = msgEdges.map(function(e) {
var m = e.node || {};
var msg = {
id: m.message_id || m.id,
text: m.text_body || null,
sender_fbid: m.sender_fbid,
sender: (m.sender && m.sender.name) || senderMap[m.sender_fbid] || m.sender_fbid,
timestamp_ms: m.timestamp_ms,
content_type: m.content_type
};
// Parse media attachments (images, videos, etc.)
var content = m.content || {};
var attachments = content.attachments || [];
if (attachments.length > 0) {
msg.attachments = attachments.map(function(a) {
return {
type: a.__typename || null,
url: a.attachment_cdn_url || a.preview_cdn_url || null,
preview_url: a.preview_cdn_url || null,
width: a.preview_width || null,
height: a.preview_height || null
};
});
}
return msg;
});
return {
thread_id: args.thread_id,
title: t.thread_title || null,
is_group: t.is_group || false,
users: users,
message_count: messages.length,
messages: messages,
has_more: t.slide_messages && t.slide_messages.page_info && t.slide_messages.page_info.has_next_page
};
}
Updated May 23, 2026Created May 23, 2026SHA-256: 63216b512ce0…