当前位置:首页>python>Python 爬虫被封?2026 年最全反爬应对手册

Python 爬虫被封?2026 年最全反爬应对手册

  • 2026-07-01 18:08:57
Python 爬虫被封?2026 年最全反爬应对手册

请求头、代理池、Playwright 反检测,逐层拆解


背景:为什么你的爬虫总是被封

很多爬虫不是代码写错了,而是根本没过反爬这一关。你本地跑得好好的,一上服务器就 403、429、验证码、重定向、空白页,原因通常不是一个点,而是一整套风控机制在一起工作。

更麻烦的是,不同网站的反爬方式差异很大。有的只看 UA,有的会上 JS 指纹,有的会看你整个会话的行为轨迹。如果你不知道自己被卡在哪一层,改来改去也是瞎猜。

我把自己踩过的坑整理成这篇手册,按从低成本到高成本的顺序来讲:先解决最基础的请求层问题,再处理频率和 IP,最后是 JS 指纹和行为检测。你可以把它当成一份排障清单,哪里被拦,就往下翻对应章节。


先搞清楚层级

层级
检测内容
对应手段
第一层
请求头、UA、Accept
伪造浏览器请求头
第二层
请求频率、请求顺序
随机延迟、乱序
第三层
IP 累计请求量
代理池、IP 轮换
第四层
验证码触发
降低触发率、人工介入
第五层
JS 指纹、Canvas、WebGL
注入脚本覆盖指纹
第六层
行为轨迹、鼠标、停留时间
贝塞尔鼠标、人工延迟
第七层
会话连续性、Cookie
Session 复用
第八层
请求失败处理
重试与指数退避
第九层
任务中断恢复
断点续跑

第一层:请求头

先检查自己的请求头长什么样

import requestsr = requests.get('https://example.com/product/123')print(dict(r.request.headers))

如果你看到这样的输出:

{"User-Agent""python-requests/2.28.1","Accept-Encoding""gzip, deflate","Accept""*/*","Connection""keep-alive"}

那这个请求大概率会被直接拦截。python-requestscurlGo-http-clientScrapy等字符串全都在黑名单里,匹配到就直接 403,不需要做任何频率分析。

字段问题对照表

字段
正常值
问题值
User-Agent
Chrome/Firefox 完整 UA
python-requests/x.x.x
Accept
详细 MIME 类型列表
*/*
Accept-Languagezh-CN,zh;q=0.9,en;q=0.8
缺失
Referer
上一个页面地址
缺失
Sec-Fetch-Destdocument
或 empty
缺失
Sec-Fetch-Modenavigate
或 cors
缺失
Sec-Fetch-Sitesame-origin
或 none
缺失

完整请求头构建函数

import randomUA_LIST = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.160 Safari/537.36","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","Mozilla/5.0 (Macintosh; Intel Mac OS X 13_6_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/121.0","Mozilla/5.0 (Macintosh; Intel Mac OS X 14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",]defbuild_headers(referer=None, is_ajax=False):    ua = random.choice(UA_LIST)if is_ajax:return {"User-Agent": ua,"Accept""application/json, text/plain, */*","Accept-Language""zh-CN,zh;q=0.9,en;q=0.8","Accept-Encoding""gzip, deflate, br","Content-Type""application/json;charset=UTF-8","Connection""keep-alive","Referer": referer or"https://example.com/","X-Requested-With""XMLHttpRequest","Sec-Fetch-Dest""empty","Sec-Fetch-Mode""cors","Sec-Fetch-Site""same-origin",        }return {"User-Agent": ua,"Accept""text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Accept-Language""zh-CN,zh;q=0.9,en;q=0.8","Accept-Encoding""gzip, deflate, br","Connection""keep-alive","Upgrade-Insecure-Requests""1","Referer": referer or"https://example.com/","Sec-Fetch-Dest""document","Sec-Fetch-Mode""navigate","Sec-Fetch-Site""same-origin","Sec-Fetch-User""?1","Cache-Control""max-age=0",    }

Sec-Fetch-Site的值要和 Referer保持一致。从站内跳转填 same-origin,从搜索引擎进来填 cross-site,直接访问填 none。填错了反而是破绽。


第二层:频率控制

随机延迟

import timeimport randomdefhuman_delay(min_s=1.5, max_s=4.0):    delay = random.uniform(min_s, max_s)if random.random() < 0.05:        delay += random.uniform(1545)    time.sleep(delay)defbatch_delay():    time.sleep(random.uniform(3090))

使用方式:

for i, target_id in enumerate(targets):    r = session.get(f"https://example.com/product/{target_id}",        headers=build_headers()    )    parse_and_save(r.text)    human_delay()if (i + 1) % 50 == 0:        print(f"[批次停顿] 已处理 {i+1} 个")        batch_delay()

打乱请求顺序

targets_shuffled = targets.copy()random.shuffle(targets_shuffled)

第三层:IP 策略

代理类型选择

类型
价格
存活率
被识别概率
推荐场景
机房代理
不推荐
住宅代理
大多数电商、内容平台
4G 移动代理
极高
极低
强防护平台、金融、票务

代理管理类

from dataclasses import dataclassimport requestsfrom requests.adapters import HTTPAdapterfrom urllib3.util.retry import Retry@dataclassclassProxyStats:    url: str    success: int = 0    fail: int = 0    banned: bool = False    @propertydeffail_rate(self):        total = self.success + self.failreturn self.fail / total if total > 0else0.0classProxyPool:def__init__(self, proxy_urls: list, rotate_every: tuple = (1525)):        self.proxies = [ProxyStats(url=url) for url in proxy_urls]        self.rotate_every = rotate_every        self._index = 0        self._request_count = 0        self._next_rotate = random.randint(*rotate_every)def_get_available(self):        available = [p for p in self.proxies ifnot p.banned and p.fail_rate < 0.5]ifnot available:for p in self.proxies:                p.banned = False            available = self.proxiesreturn availabledefcurrent(self):        available = self._get_available()if self._index >= len(available):            self._index = 0return available[self._index]defrotate(self):        available = self._get_available()        self._index = (self._index + 1) % max(len(available), 1)        self._next_rotate = self._request_count + random.randint(*self.rotate_every)return self.current()defmark_success(self):        self.current().success += 1        self._request_count += 1if self._request_count >= self._next_rotate:            self.rotate()defmark_fail(self, ban=False):        proxy = self.current()        proxy.fail += 1if ban:            proxy.banned = True        self.rotate()defmake_session(self):        proxy = self.current()        s = requests.Session()        retry = Retry(total=3, backoff_factor=2, status_forcelist=)        adapter = HTTPAdapter(max_retries=retry)        s.mount("http://", adapter)        s.mount("https://", adapter)        s.proxies = {"http": proxy.url, "https": proxy.url}return s

完整请求循环

pool = ProxyPool(["http://user:pass@residential1.example.com:8080","http://user:pass@residential2.example.com:8080",])failed_ids = []success_count = 0for target_id in targets_shuffled:    session = pool.make_session()try:        r = session.get(f"https://example.com/product/{target_id}",            headers=build_headers(),            timeout=15,        )if r.status_code == 200:if is_captcha_page(r.text, r.url):                pool.mark_fail(ban=True)                failed_ids.append(target_id)                time.sleep(random.uniform(1530))continue            parse_and_save(r.text)            pool.mark_success()            success_count += 1elif r.status_code == 403:            pool.mark_fail(ban=True)            failed_ids.append(target_id)            time.sleep(random.uniform(820))continueelif r.status_code == 429:            time.sleep(random.uniform(4590))continueelse:            failed_ids.append(target_id)except requests.exceptions.ProxyError:        pool.mark_fail(ban=True)        failed_ids.append(target_id)except requests.exceptions.Timeout:        failed_ids.append(target_id)except Exception:        failed_ids.append(target_id)    human_delay()

第四层:验证码检测

CAPTCHA_KEYWORDS = ["captcha""验证码""滑块""slider""human verification","security check""bot detection""turnstile""recaptcha""geetest"]defis_captcha_page(html: str, url: str = "") -> bool:    html_lower = html.lower()if any(k in url.lower() for k in ["captcha""verify""challenge"]):returnTrueif any(k in html_lower for k in CAPTCHA_KEYWORDS):returnTrueif len(html.strip()) < 200and"<html"in html_lower:returnTruereturnFalse

第五层:JS 指纹(Playwright)

Canvas 指纹

CANVAS_PATCH = r"""(() => {  const origToDataURL = HTMLCanvasElement.prototype.toDataURL;  const origToBlob = HTMLCanvasElement.prototype.toBlob;  function perturb(canvas) {    const ctx = canvas.getContext('2d');    if (!ctx) return;    try {      const w = Math.min(canvas.width, 16);      const h = Math.min(canvas.height, 16);      if (w === 0 || h === 0) return;      const img = ctx.getImageData(0, 0, w, h);      for (let i = 0; i < img.data.length; i += 4) {        img.data[i] ^= 1;      }      ctx.putImageData(img, 0, 0);    } catch(e) {}  }  HTMLCanvasElement.prototype.toDataURL = function(...args) {    perturb(this);    return origToDataURL.apply(this, args);  };  HTMLCanvasElement.prototype.toBlob = function(callback, ...args) {    perturb(this);    return origToBlob.call(this, callback, ...args);  };})();"""

WebGL 指纹

WEBGL_PATCH = r"""(() => {  const getParameter = WebGLRenderingContext.prototype.getParameter;  WebGLRenderingContext.prototype.getParameter = function(parameter) {    const ext = this.getExtension('WEBGL_debug_renderer_info');    if (ext) {      if (parameter === ext.UNMASKED_VENDOR_WEBGL) return 'Intel Inc.';      if (parameter === ext.UNMASKED_RENDERER_WEBGL) return 'Intel Iris OpenGL Engine';    }    return getParameter.call(this, parameter);  };})();"""

Navigator 伪装

NAVIGATOR_PATCH = r"""Object.defineProperty(navigator, 'webdriver', { get: () => undefined });Object.defineProperty(navigator, 'languages', { get: () => ['zh-CN', 'zh', 'en-US'] });Object.defineProperty(navigator, 'platform', { get: () => 'Win32' });Object.defineProperty(navigator, 'hardwareConcurrency', { get: () => 8 });Object.defineProperty(navigator, 'deviceMemory', { get: () => 8 });"""

组装完整 Playwright

import asyncioimport randomfrom playwright.async_api import async_playwrightasyncdefcreate_stealth_context(p):    browser = await p.chromium.launch(        headless=True,        args=["--disable-blink-features=AutomationControlled""--lang=zh-CN"]    )    context = await browser.new_context(        viewport={"width"1366"height"768},        locale="zh-CN",        timezone_id="Asia/Shanghai",    )await context.add_init_script(CANVAS_PATCH)await context.add_init_script(WEBGL_PATCH)await context.add_init_script(NAVIGATOR_PATCH)return browser, contextasyncdefmain():asyncwith async_playwright() as p:        browser, context = await create_stealth_context(p)        page = await context.new_page()await page.goto("https://example.com/", wait_until="domcontentloaded")await page.wait_for_timeout(random.randint(20004000))for target_id in targets_shuffled:await page.goto(f"https://example.com/product/{target_id}",                wait_until="domcontentloaded"            )await page.wait_for_timeout(random.randint(15003500))            html = await page.content()ifnot is_captcha_page(html, page.url):                parse_and_save(html)else:                failed_ids.append(target_id)            human_delay()await browser.close()asyncio.run(main())

第六层:行为轨迹

贝塞尔曲线鼠标

import mathasyncdefhuman_move(page, start: tuple, end: tuple):    x1, y1 = start    x2, y2 = end    dist = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)    steps = max(int(dist / 8), 10)    cx = (x1 + x2) / 2 + random.randint(-100100)    cy = (y1 + y2) / 2 + random.randint(-100100)for i in range(steps + 1):        t = i / steps        x = (1 - t) ** 2 * x1 + 2 * (1 - t) * t * cx + t ** 2 * x2        y = (1 - t) ** 2 * y1 + 2 * (1 - t) * t * cy + t ** 2 * y2        x += random.uniform(-1.51.5)        y += random.uniform(-1.51.5)await page.mouse.move(x, y)if t < 0.2or t > 0.8:await asyncio.sleep(random.uniform(0.0120.025))else:await asyncio.sleep(random.uniform(0.0050.015))await asyncio.sleep(random.uniform(0.10.5))

模拟输入

asyncdefhuman_type(page, selector: str, text: str):await page.click(selector)await asyncio.sleep(random.uniform(0.30.8))for ch in text:await page.keyboard.type(ch)await asyncio.sleep(random.uniform(0.050.2))await asyncio.sleep(random.uniform(0.30.8))

自然滚动

asyncdefhuman_scroll(page):for _ in range(random.randint(25)):await page.mouse.wheel(0, random.randint(200900))await asyncio.sleep(random.uniform(0.52.0))if random.random() < 0.15:await asyncio.sleep(random.uniform(1.54.0))

第七层:Session 与 Cookie

import picklefrom pathlib import PathCOOKIE_FILE = Path("cookies.pkl")defsave_cookies(session):with open(COOKIE_FILE, "wb"as f:        pickle.dump(session.cookies, f)defload_cookies(session):if COOKIE_FILE.exists():with open(COOKIE_FILE, "rb"as f:            session.cookies.update(pickle.load(f))returnTruereturnFalsedefbuild_session(base_url: str):    session = requests.Session()ifnot load_cookies(session):        session.get(base_url, headers=build_headers())        time.sleep(random.uniform(24))        save_cookies(session)return session

第八层:重试与退避

import functoolsdefretry_with_backoff(max_retries=3, base_delay=2.0):defdecorator(func):        @functools.wraps(func)defwrapper(*args, **kwargs):for attempt in range(max_retries + 1):try:return func(*args, **kwargs)except Exception as e:if attempt == max_retries:raise                    sleep_time = base_delay * (2 ** attempt) + random.uniform(01)                    print(f"[重试 {attempt + 1}/{max_retries}] 等待 {sleep_time:.1f}s")                    time.sleep(sleep_time)return wrapperreturn decorator@retry_with_backoff(max_retries=3, base_delay=2)deffetch_product(session, product_id):    r = session.get(f"https://example.com/product/{product_id}",        headers=build_headers(),        timeout=15    )    r.raise_for_status()return r

第九层:断点续跑

import jsonimport timefrom pathlib import PathclassCrawlState:def__init__(self, task_name: str):        self.state_dir = Path(f".crawl_state/{task_name}")        self.state_dir.mkdir(parents=True, exist_ok=True)        self.success_file = self.state_dir / "success.json"        self.failed_file = self.state_dir / "failed.json"        self._success = set(self._load(self.success_file, []))        self._failed = set(self._load(self.failed_file, []))        self._start_time = time.time()def_load(self, path, default):return json.loads(path.read_text()) if path.exists() else defaultdefis_done(self, item_id) -> bool:return str(item_id) in self._successdefmark_success(self, item_id):        self._success.add(str(item_id))        self._failed.discard(str(item_id))if len(self._success) % 100 == 0:            self._flush()defmark_failed(self, item_id):if str(item_id) notin self._success:            self._failed.add(str(item_id))def_flush(self):        self.success_file.write_text(            json.dumps(list(self._success), ensure_ascii=False)        )        self.failed_file.write_text(            json.dumps(list(self._failed), ensure_ascii=False)        )defsave(self):        self._flush()defsummary(self):        total = len(self._success) + len(self._failed)        rate = len(self._success) / total * 100if total > 0else0        elapsed = time.time() - self._start_time        print(f"成功: {len(self._success)} | 失败: {len(self._failed)} | "f"成功率: {rate:.1f}% | 耗时: {elapsed / 60:.1f} min")if self._failed:            print(f"⚠️  {len(self._failed)} 个失败,运行补跑脚本重试")

使用方式:

state = CrawlState("product_task_20260115")for target_id in targets_shuffled:if state.is_done(target_id):continuetry:        r = fetch_product(session, target_id)        parse_and_save(r.text)        state.mark_success(target_id)except Exception:        state.mark_failed(target_id)    human_delay()state.save()state.summary()

快速排查清单

  • 请求头是不是暴露了 python-requests
  • UA 是不是每次都一样?
  • Sec-Fetch-*字段是不是缺失?
  • 请求有没有加随机延迟?
  • 请求顺序是不是太规律(递增 ID)?
  • 是不是单 IP 跑了大量请求?
  • 代理类型是不是用了机房代理?
  • Playwright 有没有处理 Canvas/WebGL?
  • navigator.webdriver是不是还暴露着?
  • 鼠标轨迹是不是直线瞬移?
  • Session 是不是每次都新建的?

按现象对应处理

现象
优先排查
一请求就 403
请求头,UA,黑名单 IP
跑几分钟后被封
频率,请求顺序
换 IP 又能跑
IP 累计限制
页面能开但一直跳验证码
JS 指纹,行为轨迹
Playwright 还是失败
Canvas/WebGL/Navigator
不定期被封,规律不明显
会话连续性,Cookie
空白页、极短 HTML
WAF 拦截,Cloudflare

最后

反爬不是一个技巧问题,而是一个分层问题。先判断自己卡在第几层,再针对那一层处理。

核心原则只有一条:让爬虫的行为特征尽量往真实用户靠拢。

  • 普通采集先用 requests,别一上来就上浏览器。
  • 遇到动态页、强 JS、强验证,再考虑 Playwright。
  • 能降频就降频,能缓存就缓存。
  • 长任务一定要做断点续跑。
  • 不要把验证码当成主流程来设计。
  • 代理质量比代理数量更重要。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 08:28:07 HTTP/2.0 GET : https://f.mffb.com.cn/a/493880.html
  2. 运行时间 : 0.109141s [ 吞吐率:9.16req/s ] 内存消耗:4,639.42kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=580faebe92ec24d66f7b036eff61dba0
  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.000496s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000718s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000267s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001475s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000518s ]
  6. SELECT * FROM `set` [ RunTime:0.000209s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000512s ]
  8. SELECT * FROM `article` WHERE `id` = 493880 LIMIT 1 [ RunTime:0.000906s ]
  9. UPDATE `article` SET `lasttime` = 1783038487 WHERE `id` = 493880 [ RunTime:0.001821s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000249s ]
  11. SELECT * FROM `article` WHERE `id` < 493880 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000405s ]
  12. SELECT * FROM `article` WHERE `id` > 493880 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000515s ]
  13. SELECT * FROM `article` WHERE `id` < 493880 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001714s ]
  14. SELECT * FROM `article` WHERE `id` < 493880 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.012139s ]
  15. SELECT * FROM `article` WHERE `id` < 493880 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.019096s ]
0.111785s