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

调用Twitter GraphQL API时出现fetch Invalid name错误排查

问题原因与修复方案

核心错误原因

你遇到的Invalid name错误是因为手动添加了HTTP/2伪头字段::path、:authority、:method、:scheme。这些字段是浏览器发起请求时自动生成的,不允许开发者手动设置,强行添加会触发头名称格式校验失败。

具体修复步骤

  1. 移除非法请求头:删掉所有以冒号开头的头字段,这些不需要手动配置,fetch会根据你传入的URL自动处理。
  2. 移除多余的Content-Type头:这是GET请求,没有请求体,设置Content-Type: application/json完全多余,反而可能干扰请求。
  3. 清理Cookie字符串:你的Cookie值末尾带有换行符,可能导致解析异常,要去掉多余的换行。
  4. 优化URL构建逻辑:手动拼接JSON参数容易出现转义错误,建议先将参数对象转为JSON字符串,再用encodeURIComponent编码后拼接,避免引号冲突。

修复后的代码

async function getData(username) {
    // 定义参数对象,更易维护
    const variables = JSON.stringify({
        screen_name: username,
        withSafetyModeUserFields: true
    });
    const features = JSON.stringify({
        hidden_profile_likes_enabled: true,
        hidden_profile_subscriptions_enabled: true,
        responsive_web_graphql_exclude_directive_enabled: true,
        verified_phone_label_enabled: true,
        subscriptions_verification_info_is_identity_verified_enabled: true,
        subscriptions_verification_info_verified_since_enabled: true,
        highlights_tweets_tab_ui_enabled: true,
        responsive_web_twitter_article_notes_tab_enabled: true,
        creator_subscriptions_tweet_preview_api_enabled: true,
        responsive_web_graphql_skip_user_profile_image_extensions_enabled: false,
        responsive_web_graphql_timeline_navigation_enabled: true
    });
    const fieldToggles = JSON.stringify({
        withAuxiliaryUserLabels: false
    });

    // 编码参数后拼接URL
    const URL = `https://api.twitter.com/graphql/k5XapwcSikNsEsILW5FvgA/UserByScreenName?variables=${encodeURIComponent(variables)}&features=${encodeURIComponent(features)}&fieldToggles=${encodeURIComponent(fieldToggles)}`;

    const response = await fetch(URL, {
        method: "GET",
        mode: "cors",
        cache: "no-cache",
        credentials: "same-origin",
        headers: {
            "Authorization": "Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA",
            "Cookie": "guest_id_marketing=v1:170955125343839663; guest_id_ads=v1:170955125343839663; guest_id=v1:170955125343839663; gt=1764611971050074353; _ga=GA1.2.251089784.1709551255; _gid=GA1.2.393957230.1709551255; personalization_id=\"v1_5jbQDTm8Tn2sQ/f9diPocA==\"",
            "Origin": "https://twitter.com",
            "Referer": "https://twitter.com",
            "X-Client-Transaction-Id": "I7fMTBcu/4HmKfngKEMY6kPjahaJoBRzqcr/bTYgBPINSk5CBpY1sDLiD3RBiJlAp0RotSI7wGYBtp0x28iZw/JR986wIg",
            "X-Guest-Token": "1764611971050074353"
        },
        redirect: "follow",
        referrerPolicy: "strict-origin-when-cross-origin"
    });
    return response.json();
}

getData("sama").then((data) => {
    console.log(data);
});

额外说明

  • 你使用的Guest Token和Bearer Token都是未登录状态下的公开令牌,暂时可以正常使用,但Twitter可能随时更新令牌规则,后续如果出现401/403错误,需要重新从无痕窗口的请求中提取最新令牌。
  • 同源环境下(在twitter.com页面控制台执行),credentials: "same-origin"可以保留,确保Cookie自动携带,但你手动指定的Cookie如果和当前页面的Cookie冲突,可能引发问题,也可以尝试去掉手动设置的Cookie,让浏览器自动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:47:34