断点打不进requests.get()需检查调试配置:设"console": "integratedTerminal"、确认解释器路径及requests安装;加logging.basicConfig(level=logging.DEBUG)查看底层日志;异步需"subProcess": true和"justMyCode": false;Scrapy须用"module": "scrapy"并指定cwd;反爬验证推荐REST Client扩展。

断点打不进 requests.get() 怎么办
不是代码写错了,是调试器没看到请求真正发出。默认配置下,requests 的 SSL 错误、重定向或连接超时可能静默失败,控制台也不报错,断点就“跳过”了。
实操建议:
立即学习“Python免费学习笔记(深入)”;
- 确保
launch.json里设了"console": "integratedTerminal"—— 缺这个,很多网络异常根本不会打印出来 - 同步爬虫直接在
response = requests.get(...)行打点,F5 启动后必须停住;如果不停,先检查解释器是否选对(路径含.venv),再确认requests确实已装进该环境 - 加一行
import logging; logging.basicConfig(level=logging.DEBUG),能看到 requests 底层的 CONNECT / SEND / RECV 日志,比猜快得多
异步爬虫(aiohttp / httpx.AsyncClient)断点灰掉
VSCode 默认 Python 调试器不介入 asyncio event loop 调度,await session.get() 这类调用根本不会触发断点,不是你代码问题,是调试器能力边界。
实操建议:
立即学习“Python免费学习笔记(深入)”;
-
launch.json配置必须含"subProcess": true和"justMyCode": false—— 前者让调试器接管子线程/协程,后者才能进到aiohttp内部源码里 - 别只改
type,还要确认"module": "runpy"+"args": ["-m", "your_async_spider"],否则 async 入口函数压根不被识别为可调试目标 - 如果仍不进,临时把
async def main()改成同步包装:用asyncio.run(main())包一层再打点,绕过调试器对顶层 async def 的识别盲区
Scrapy 爬虫断点不生效,报 Unknown command: crawl
Scrapy 不是普通 Python 脚本,它靠命令行入口启动,VSCode 默认配置找不到 crawl 子命令,本质是工作目录和模块路径没对齐。
实操建议:
立即学习“Python免费学习笔记(深入)”;
- 不要用
"program": "${file}"模式,必须用"module": "scrapy",并显式指定"cwd"指向含scrapy.cfg的项目根目录 - 配置示例:
{ "name": "Scrapy", "type": "python", "request": "launch", "module": "scrapy", "args": ["crawl", "my_spider"], "cwd": "${workspaceFolder}/my_scrapy_project", "console": "integratedTerminal" } - 更稳的做法是另建
run.py:里面只写from scrapy.cmdline import execute; execute(['scrapy', 'crawl', 'my_spider']),然后用"program": "run.py"启动 —— 这样路径、环境变量、sys.path 全由你控制
反爬环境下如何验证请求头和证书行为
光看 Python 代码没法确认 User-Agent、Cookie、SSL 验证是否真按预期发出去。VSCode 里混着写日志、改代码、抓包,效率低还容易漏细节。
实操建议:
立即学习“Python免费学习笔记(深入)”;
- 用 REST Client 扩展建
test.http文件,手动复制爬虫中构造的headers(尤其User-Agent、Referer、Cookie)、URL、query 参数,格式严格:headers和body之间空一行,Content-Type显式写出 - 遇到
CERTIFICATE_VERIFY_FAILED,REST Client 默认校验证书,需在设置里关掉:rest-client.validateCertifi设为false;Python 侧对应加verify=False或用自定义certifi路径 - 动态 token?REST Client 支持
{{now}}(需开启rest-client.enableRequestTimestamp),或用@token = {{jwt_token}}+### @name login提取响应里的 Set-Cookie,复现能力比硬编码强一个量级
反爬调试最耗时间的从来不是写代码,而是确认「发出去的到底是不是你以为的那个请求」—— headers 多个空格、User-Agent 少个字母、SSL 验证开关不一致,都可能导致 403 或空响应。REST Client 和 Python 调试器必须分开用,各干各的活。


















