猫野喵喵 2024-03-31 11:06 采纳率: 0%
浏览 16

小程序fiddle抓包视频403了怎么处理?

小程序fiddle抓包视频403了怎么处理?
是手动抓包的,之前可以正常下载资源,现在点击视频后就报403,下载不了数据了

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-31 11:06
    关注

    引自免费微信小程序:皆我百晓生

    在处理小程序Fiddle抓包视频403的问题时,我们需要关注以下几个步骤:

    1. 理解问题:首先,我们需要确认视频文件的URL是否已经更新,并且当前版本的Fiddle无法正常访问这个新的URL地址。确保当前的视频路径与之前的版本相同。

      • 在上一张截图中,我们看到的URL分别是apiopen.jingdaka.comseo.jingdaka.com。根据API开放平台的授权文档,如果这两个域名对应的是同一个服务(例如,同一个YouTube API、同一款产品等),则有可能是因为服务的IP地址发生了变动,导致当前版本的Fiddle无法正确连接到相应服务。

      • 其次,我们可以通过在GitHub Pages或repl.it等在线代码编辑器查看Fiddle的源代码,尝试替换其中一个视频URL地址为新的版本URL地址。

      • 如果两个域名对应的Service与当前版本不一致,可能是新版本的服务引入了一些新的API路径,或改变了旧版本使用的依赖库,导致原始服务无法通过新版本服务进行请求。在这种情况下,我们需要重新检查并升级相关的依赖库或更新服务版本。

    2. 抓包测试:使用Chrome DevTools或其他现代浏览器开发者工具,将两个修改后的视频URL地址加入到Fiddle的fetchVideo方法中,然后运行Fiddle,观察它是否能正常下载视频。

      • 记录下获取到的视频文件内容和类型(如果是流媒体格式,可能包含额外的数据结构),以便后续分析和修复原因。
    3. 分析错误消息:如果视频下载失败,Fiddle会返回一个详细的错误信息,通常包括错误代码、服务器端错误描述以及具体的错误消息。根据错误信息,我们可以定位出具体的原因,比如连接超时、网络不稳定、服务异常等。

    4. 对比更改前后的状态:利用代码审查、网络流量监控等方式,对比原始Fiddle抓包视频文件的下载进度和之后的下载进度,检查它们是否同步并且没有显著差异。

    5. 排查相关依赖项:查找可能导致Fiddle抓取视频失败的相关依赖项或插件。有时,某些插件或框架可能需要特定版本的支持,导致原服务的API被禁用或断开连接。检查Fiddle项目中的依赖列表,确保所有的依赖都已更新至最新版本。

    6. 调整服务版本或API路径:根据以上步骤确定的原因,对服务版本或API路径进行相应的调整。例如,如果是因为服务未更新而导致的服务版本过低,我们需要向服务提供商申请更高的权限,或者使用代理服务器等方式提高请求速度。同时,我们也可以检查是否存在误引入的新API路径,或者服务本身的限制导致请求失败。

    7. 更新服务和代码:一旦找到了解决方案,需要更新相关服务的版本或API路径,并重新编写Fiddle的抓包脚本以兼容这些变化。确保修改后的脚本没有引入新的错误或异常,而是遵循Fiddle的开发规范。

    8. 调试和测试:运行修改后的Fiddle抓包,重复步骤3-7,检查能否成功下载视频,特别是下载的视频文件格式、大小和位置等方面。

      • 根据需要,可能还需要使用其他工具(如Puppeteer)来模拟真实浏览器环境,模拟不同情况下的网络连接和视频加载行为。

      • 最后,再次运行Fiddle,以验证上述步骤是否解决了所有问题,并且视频可以成功下载和显示。

    下面是一个基本的示例代码片段,用于演示如何解决小程序Fiddle抓包视频403的问题:

    const axios = require('axios');
    
    // 假设我们抓到了视频403的错误信息
    const errorInfo = JSON.parse(fiddler.requests[0].response);
    
    if (errorInfo.status === 403) {
        // 确认视频文件已经更新
        const videoUrl = 'https://apiopen.jingdaka.com/video/2020/12/09/0VvC1mn5CH4KAGK76sqib0Q91DlrykpC.mp4';
    
        // 检查Fiddle抓包的API配置
        if (!this.hasFiddleAPIConfig()) {
            throw new Error(`Your Fiddle is not configured with an API configuration file.`);
        }
    
        // 创建一个新的服务URL参数
        const serviceUrl = `https://seo.jingdaka.com?version=${errorInfo.version}`;
    
        // 调用API链接,发送POST请求以更新API版本
        const updateApiVersionRequest = {
            url: serviceUrl,
            method: 'POST',
            data: {
                version: errorInfo.version,
            },
        };
    
        try {
            const response = await axios.post(serviceUrl, updateApiVersionRequest);
            console.log(`Updated API version successfully.`); // 这里可以插入实际操作结果
        } catch (error) {
            console.error(`Failed to update API version:`, error.message);
        }
    } else {
        // 添加更多错误处理逻辑,如断路器回归,业务流程重构等
    
        // 抓包更新后的视频文件内容
        let videoFileContent = '';
        for (let i = 0; i < fiddler.requests.length; i++) {
            const request = fiddler.requests[i];
            if (request.url.includes(videoUrl)) {
                videoFileContent += request.body;
            }
        }
    
        console.log('Downloaded video:', videoFileContent);
    }
    

    在这个示例中,我们首先检查了视频文件是否已经更新,并将其保存在一个变量videoUrl中。然后,我们创建了一个新的服务URL参数serviceUrl,并发送一个POST请求以更新API版本。我们将API版本设置为错误信息中的版本,确保Fiddle抓包时使用的就是这个最新的版本。

    接下来,我们捕获网络请求的响应,将每个HTTP请求的响应体内容添加到一个字符串videoFileContent中。当Fiddle抓包成功下载视频时,会打印出Downloaded video:的消息。

    注意,这个示例仅用于演示思路,实际情况可能会涉及到更多的步骤和细节,例如使用第三方库如"axios"来调用API、使用"fs"模块读取本地视频文件、检查Fiddle抓包设置是否正确、使用"debugger"来调试代码等。在实际应用中,可能还需要根据具体的需求和环境进行适当的扩展和优化。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月31日

悬赏问题

  • ¥30 为什么会失败呢,该如何调整
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析