当前位置:首页>python>Python V8 原生扩展,重新定义 JS 逆向的玩法

Python V8 原生扩展,重新定义 JS 逆向的玩法

  • 2026-07-02 16:51:49
Python V8 原生扩展,重新定义 JS 逆向的玩法

iv8:Python V8 原生扩展,重新定义 JS 逆向的玩法

一、引言

在js逆向领域,"前端加密逆向"、"反爬虫绕过"、"补环境"是经久不衰的话题。无论是瑞数、Akamai、Cloudflare,还是自定义的 JS 签名校验,核心思路都是:在浏览器环境里跑 JS → 拿到动态参数 → 回放请求

传统方案依赖 Node.js + jsdom + proxy 魔改,或者 Headless Chrome CDP。前者补环境补到崩溃,后者太重且容易被检测。

今天介绍一个更简洁的方案:iv8 —— 一个 Python 原生的 V8 运行时扩展。pip 一键安装,纯 Python 进程搞定。这篇文章将围绕 iv8 的用法、原理和实战展开。

项目地址https://github.com/HanZzzzz000/iv8

二、iv8 是什么

iv8 是一个 Python C/C++ 扩展,在 C++ 层嵌入了 V8 引擎(Chromium 同款 JS 引擎),并在 V8 之上实现了大量浏览器 API 的模拟。Community 版免费闭源,pip 直接安装。

pip install iv8

核心 API

API
作用
iv8.JSContext(environment={...}, time_mode="logical")
创建 V8 隔离上下文,注入浏览器环境(navigator、screen、location 等)
ctx.expose(data, name)
向 JS 上下文注入任意数据,通过 window.__iv8__.data.<name> 访问
window.__iv8__.page.load(...)
加载 HTML + JS 资源,解析 DOM,按顺序执行 <script> 标签,触发 DOMContentLoaded
window.__iv8__.eventLoop.advance(ms)
推进逻辑事件循环(非真实等待,瞬间完成)
window.__iv8__.netLog.entries
捕获 JS 执行期间所有 XHR/fetch 请求(url + method + headers + body)

与传统方案的本质区别

jsdom / Node.js
Headless Chrome CDP
iv8
引擎
Node.js V8
完整 Chromium
内嵌 V8(Chromium 同款)
浏览器 API
手动补,补一个漏十个
真实浏览器,全量
C++ 层预置,常用 API 已实现
进程
Python + Node 双进程
Python + Chrome 双进程
纯 Python 单进程
资源占用
极重
速度(逻辑时间)
取决于真实定时器
取决于真实页面加载
eventLoop.advance(5000)
 瞬间完成
检测面
环境指纹可能不一致
接近真实,但 CDP 可被检测
可控,按需注入
反检测
需手动补环境
需 stealth 插件
按需构造 environment dict

一句话总结:iv8 相当于把 Chromium 的 V8 引擎单独拆出来,用 Python 直接控制,同时保留了关键浏览器 API 的模拟层

三、iv8 的内部机制

3.1 time_mode="logical" —— 逻辑时间加速

iv8 支持两种时间模式:

  • • real(真实时间)setTimeout(fn, 5000) 真的等 5 秒。适合需要观察真实时序的场景。
  • • logical(逻辑时间)eventLoop.advance(5000) 瞬间推进定时器队列 5000ms。所有到期回调立即执行,不等待真实时间。

在逆向场景中,我们通常不需要真的等 5 秒让 Akamai 采集指纹。advance(5000) 一次性跑完所有排队的定时器,整个过程不到一秒。这叫 事件循环加速,是 iv8 在逆向场景中最关键的特性。

3.2 page.load() —— 模拟完整页面加载

ctx.expose({"baseURL": page_url,"html": html_content,"resources": {"/path/to/script.js": script_content, ...},}, "s1")ctx.eval("window.__iv8__.page.load(window.__iv8__.data.s1)")

page.load() 内部做了这几件事:

  1. 1. 解析 HTML → 构建 DOM 树(document、body、head、script 标签等)
  2. 2. 按文档顺序执行 <script> → 每个 script 按其 src 从 resources 字典取内容,用 V8 编译执行
  3. 3. 触发 DOMContentLoaded 事件 → 页面脚本中注册的 DOMContentLoaded 回调开始运行
  4. 4. 脚本内部的定时器注册 → setTimeoutsetInterval 被捕获到事件循环队列中

注意:page.load() 是同步的,它只执行 script 标签和触发事件,不会自动推进事件循环。定时器回调要等到调用 eventLoop.advance() 才执行。

3.3 netLog —— XHR/fetch 透明捕获

iv8 在 C++ 层劫持了 XMLHttpRequest 和 fetch。JS 中任何网络请求都会被拦截:

  • • GET 请求:URL、headers、响应内容全部记录
  • • POST 请求:URL、headers、body(sensor_data)、响应全部记录

捕获的数据通过 window.__iv8__.netLog.entries 暴露为 JSON 数组:

[{"method":"POST","url":"/h8u_e/.../2F0LGcB","body":"...sensor_data...","status":200},{"method":"POST","url":"/h8u_e/.../2F0LGcB","body":"...second_post...","status":200}]

对于 Akamai 绕过,sensor_data 的 POST body 就是通过 netLog 捕获的,无需手动 Hook XHR。

3.4 environment —— 可控的浏览器指纹

iv8 在创建 JSContext 时接受一个 environment 字典:

environment = {"navigator": {"userAgent""Mozilla/5.0 ...","platform""Win32","language""zh-CN","languages": ["zh-CN""en-US"],"hardwareConcurrency"8,"deviceMemory"8,"webdriver"False,          # 关键:声明不是自动化工具    },"screen": {"width"1920"height"1080,"colorDepth"24"pixelDepth"24,    },"location": {"href""https://target.com/page","origin""https://target.com","hostname""target.com",    },}

这些值在 JS 中通过 navigator.userAgentscreen.widthlocation.href 读取,与真实浏览器行为一致。对于目标网站的指纹采集脚本来说,iv8 环境与真实 Chrome 没有区别(在 Akamai 关心的维度上)。

3.5 C++ 层日志控制

iv8 的 C++ 层遇到未实现的浏览器 API 时会通过 stderr 输出 ERROR 日志:

[97m... ERROR: Navigator.plugins not implemented ...[0m

四、与传统逆向常见方案的对比

4.1 jsdom 补环境方案

传统逆向最常见的思路:在 Node.js 中用 jsdom 模拟浏览器,手动补 navigatorscreendocument 等对象。

优点:灵活,可深度定制。

痛点

  • • Akamai v3 会检测 100+ 个属性,漏一个就过不去
  • • 属性名往往是混淆过的,通过报错才能发现少了什么(报一个补一个,循环)
  • • jsdom 的 DOM API 实现与浏览器有细微差异,可能被检测到
  • • Node.js 的 globalThisprocessBuffer 等残留可能暴露运行环境

iv8 的改进:C++ 层预置了常用浏览器 API,不用手动补。遇到未实现的 API,看 iv8 的 stderr ERROR 日志就知道缺了什么,针对性添加。

4.2 Headless Chrome CDP 方案

通过 Playwright / Puppeteer / Selenium 控制真实浏览器。

优点:环境最真实。

痛点

  • • 资源消耗大(每个实例 200MB+ 内存)
  • • 启动慢(2-5 秒)
  • • CDP 协议本身可能被检测(navigator.webdriverwindow.chrome.runtime 等)
  • • 大规模并发困难
  • • 真实时间等待无法加速

iv8 的改进:无头、无浏览器进程、逻辑时间可加速。并发 100 个 JSContext 只有 Python 进程开销。

五、实战:通用 5 步 Akamai 绕过

以下流程适用于绝大多数 Akamai v2/v3 保护的网站。

Step 1:GET 页面,种子 Cookie

from curl_cffi import requests as cffi_requestssession = cffi_requests.Session(impersonate="chrome")resp = session.get("https://target.com/page", headers={...})html = resp.text  # 拿到 _abck, ak_bmsc, bm_sz 初始 Cookie

curl_cffi 负责 TLS 指纹伪装。impersonate="chrome" 模拟 Chrome 的 JA3/JA4 指纹,避免在 TLS 层被 Akamai 识别。

Step 2:动态提取 Akamai 脚本路径

scripts = {}for src in re.findall(r'src="(/[A-Za-z0-9_\-]+/[A-Za-z0-9_\-]+/[A-Za-z0-9_\-/]+)"', html):if"/akam/"in src:        scripts["bootstrap"] = BASE_URL + srcelif"h8u_e"in src:        scripts["sensor"] = BASE_URL + src

为什么不硬编码? Akamai 定期轮换脚本路径(大概每周变化),硬编码 = 一周后失效。

Step 3:同一 Session 下载脚本(关键坑点)

headers = {"sec-fetch-dest""script""referer": PAGE_URL, ...}for _ inrange(3):  # 3 轮for name, url in scripts.items():        r = session.get(url, headers=headers)        script_contents[name] = r.text

必须用同一个 session!服务端将 _abck Cookie 与 sensor_data 绑定校验。换 session 会导致 _abck 与 sensor_data 不匹配,永远无法通过验证。

Step 4:iv8 运行 Akamai JS

resources = {surl: content for ...}  # URL → 脚本内容映射with iv8.JSContext(environment=env, time_mode="logical"as ctx:    ctx.expose({"baseURL": PAGE_URL, "html": html, "resources": resources}, "s1")    ctx.eval("window.__iv8__.page.load(window.__iv8__.data.s1)")  # 加载页面    ctx.eval("window.__iv8__.eventLoop.advance(5000)")            # 加速执行    entries = json.loads(ctx.eval("JSON.stringify(window.__iv8__.netLog.entries)"))

Step 5:回传 sensor_data,验证通过

for e in entries:if e["method"] == "POST"and"h8u_e"in e["url"]:        session.post(e["url"], data=e["body"], headers={...})# 验证resp = session.get("https://target.com/api/protected")print("绕过成功"if resp.status_code == 200else"仍在拦截")

POST 回服务端后,_abck Cookie 转为已验证状态,后续请求畅通无阻。

六、iv8 的适用场景

场景
是否适合 iv8
说明
Akamai v2/v3 绕过
适合
sensor_data 生成可直接用 netLog 捕获
瑞数 / 顶象 滑块
适合
JS 动态参数在 V8 中跑出来,netLog 抓 XHR
Cloudflare Challenge
部分适合
Turnstile 涉及更多浏览器 API,可能需要补环境
自定义 JS 签名
适合
把签名函数或整个 bundle 丢给 iv8,调用后取结果
WebSocket 协议逆向
待验证
Community 版 netLog 主要覆盖 XHR/fetch
WebAssembly 签名
适合
V8 原生支持 WASM,iv8 可以直接实例化
大规模数据采集
适合
绕过一次拿到 cookie,后续 curl_cffi 直接发请求

七、iv8 的局限性

  1. 1. Community 版缺少部分浏览器 API:WebGL(Canvas 指纹)、window.chrome RuntimeContext、Service Worker 等。对于基础 Akamai 绕过足够,但高对抗场景可能需要额外补环境。
  2. 2. 闭源:不像 jsdom 可以看源码调试。遇到问题只能看 C++ 层的 ERROR 日志推断。
  3. 3. Windows 支持可能有坑:GBK 终端下 C++ 日志乱码、ANSI 转义序列残留。
  4. 4. 真实网络请求:Community 版不做真实 HTTP,需要配合 curl_cffi 使用。netLog 只是"记录"JS 中发起的请求,实际收发由外部 session 完成。

八、总结

环节
工具
作用
TLS 指纹伪装
curl_cffi
模拟 Chrome JA3/JA4
JS 执行引擎
iv8 (V8)
运行目标网站的 JS 脚本
浏览器 API 模拟
iv8 C++ 层
navigator、screen、location 等
网络请求捕获
iv8 netLog
拦截 XHR/fetch 拿 sensor_data 或签名参数
Cookie 管理
curl_cffi Session
全流程同一 Session,保证 _abck 一致性
后续数据采集
curl_cffi
绕过后的 API 请求

iv8 的价值在于把浏览器 JS 执行这一环节单独抽出来,用 Python 原生控制,不要浏览器、不要 Node.js、不要双进程通信。V8 引擎的性能 + 逻辑时间加速 + netLog 透明捕获,这三者组合构成了新一代 JS 逆向工具链的核心。

对于逆向爱好者来说,iv8 提供了一种比 jsdom 补环境更稳定、比 CDP 更轻量的方案。如果你经常面对 Akamai、瑞数、Cloudflare 或者各种自定义 JS 签名,iv8 值得一试。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 16:06:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/494936.html
  2. 运行时间 : 0.319645s [ 吞吐率:3.13req/s ] 内存消耗:4,487.46kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e1e665490b3c150bd40839c926800580
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000354s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000614s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000262s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000267s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000639s ]
  6. SELECT * FROM `set` [ RunTime:0.000229s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000553s ]
  8. SELECT * FROM `article` WHERE `id` = 494936 LIMIT 1 [ RunTime:0.000461s ]
  9. UPDATE `article` SET `lasttime` = 1783065980 WHERE `id` = 494936 [ RunTime:0.022491s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.011792s ]
  11. SELECT * FROM `article` WHERE `id` < 494936 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.026433s ]
  12. SELECT * FROM `article` WHERE `id` > 494936 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.007272s ]
  13. SELECT * FROM `article` WHERE `id` < 494936 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.013644s ]
  14. SELECT * FROM `article` WHERE `id` < 494936 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.052618s ]
  15. SELECT * FROM `article` WHERE `id` < 494936 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.079927s ]
0.322358s