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

无访问令牌嵌入Instagram动态及Ins用户名爬虫代码失效求助

问题二:修复失效的Instagram内容抓取代码

你提供的旧代码失效的核心原因就是Instagram的页面结构大改:现在的主页内容都是动态渲染的,用file_get_contents拿到的静态HTML里根本没有用户的动态数据,更别说window._sharedData了。

如果实在不想用官方API(需要访问令牌),可以试试用无头浏览器模拟真实用户访问来获取动态渲染后的页面(注意:这种方法违反Instagram的服务条款,随时可能失效,风险自负)。给你一个PHP的示例思路(用chrome-php库):

require 'vendor/autoload.php';

use HeadlessChromium\BrowserFactory;

function scrape_insta($username) {
    $browserFactory = new BrowserFactory();
    // 启动无头浏览器
    $browser = $browserFactory->createBrowser();
    
    try {
        $page = $browser->createPage();
        // 导航到用户主页,等待页面加载完成
        $page->navigate("https://instagram.com/{$username}")->waitForNavigation();
        
        // 等待帖子元素加载出来(根据当前Instagram的DOM结构调整选择器)
        $page->waitForSelector('article img');
        
        // 获取完整的页面HTML(包含动态渲染的内容)
        $html = $page->getHtml();
        
        // 尝试提取包含用户动态的JSON数据(Instagram的结构随时可能变,这个正则需要定期调整)
        preg_match('/window\.__additionalDataLoaded.*?({.*?});/', $html, $matches);
        
        if (!empty($matches[1])) {
            $data = json_decode($matches[1], true);
            // 提取用户的最新帖子列表
            $latestPosts = $data['graphql']['user']['edge_owner_to_timeline_media']['edges'];
            return $latestPosts;
        }
    } finally {
        // 关闭浏览器
        $browser->close();
    }
    
    return [];
}

不过真心建议你改用官方Instagram Graph API:虽然需要申请Facebook开发者账号、创建应用并获取访问令牌,但这是唯一合法且稳定的方案,不会有被封禁的风险,而且能拿到更规范的数据格式。


内容的提问来源于stack exchange,提问作者Darth Mikey D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:30:39