NanmiCoder / NanmiCoder/MediaCrawler
[问题] 贴吧爬虫首次执行任务时 403 Forbidden
Open
Nobody has claimed this yet.
question
- Dominant language
- Python
- Stars
- 65.3k
- Forks
- 12.6k
- PR merge metrics
- No merged PRs in 30d
Description
⚠️ 提交前确认
- [√] 我已经仔细阅读了项目使用过程中的常见问题汇总
- [√] 我已经搜索并查看了已关闭的issues
- 我确认这不是由于滑块验证码、Cookie过期、Cookie提取错误、平台风控等常见原因导致的问题
可能是Cookie提取错误、平台风控等常见原因,但是不知道解决方案
❓ 问题描述
贴吧爬虫首次执行任务时 403 Forbidden
登录方式为cookie
🔍 使用场景
- 目标平台:贴吧
- 使用功能:用户主页爬取
- PLATFORM = "tieba" # 平台,xhs | dy | ks | bili | wb | tieba | zhihu
KEYWORDS = "恐怖推理" # 关键词搜索配置,以英文逗号分隔
LOGIN_TYPE = "cookie"
CRAWLER_TYPE = (
"creator"
)
💻 环境信息
- 操作系统: win11
- Python版本: 3.10
- 是否使用IP代理: 否
- 是否使用VPN翻墙软件:否
- 目标平台(抖音/小红书/微博等):贴吧
📋 错误日志
(.venv) PS C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler> uv run main.py
warning: `VIRTUAL_ENV=C:\Users\xiangzirui\PyCharmMiscProject\.venv` does not match the project environment path `.venv` and will be ignored; use `--active` to target the active environment instead
2025-08-04 17:00:28 MediaCrawler INFO (core.py:293) - [WeiboCrawler.get_creators_and_notes] Begin get weibo creators
2025-08-04 17:00:28 httpx INFO (_client.py:1740) - HTTP Request: GET https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb "HTTP/1.1 403 Forbidden"
2025-08-04 17:00:28 MediaCrawler ERROR (client.py:67) - Request failed, method: GET, url: https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb, status code: 403
2025-08-04 17:00:28 MediaCrawler ERROR (client.py:68) - Request failed, response: <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible"content="IE=edge"><meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>百
安全验证</title><style>body{margin:0;padding:0}</style></head><body></body><!--loadScript--><script>function ieOnEnd(script,cb){script.onreadystatechange=function(){if(this.readyState!=='complete'&&this.readyState!=='loaded'){return}this.onreadystatechange=null;cb(null,script)}}function stdOnEnd(script,cb b
){script.onload=function(){this.onerror=this.onload=null;cb(null,script)};script.onerror=function(e){this.onerror=this.onload=null;cb(new Error(`Failed to load ${this.src}`),script)}}function loadScript(src,opts,cb){var script=document.createElement('script');if(typeof opts==='function'){cb=opts;opts={}}opt
s=opts||{};cb=cb||function(){};script.type=opts.type||'text/javascript';script.charset=opts.charset||'utf8';script.async='async'in opts?!!opts.async:true;script.src=src;if(opts.attrs){setAttributes(script,opts.attrs)}if(opts.text){script.text=''+opts.text}var onend='onload'in script?stdOnEnd:ieOnEnd;onend(s
cript,cb);if(!script.onload){stdOnEnd(script,cb)}document.head.appendChild(script)}</script><script>window.BIOC_OPTIONS={ak:'MtwiTOYhbgACaxGXidGoCM3MjRimIPL1',subid:'tb_pc_user_home_bfe',ext:'vsGqTDZjAou2DpLyyRZceE1DgSBZ9cLieGztimJtIpOKigW8q4KjeIiFtEY8FOl+I+/MIIjMskDwcs1rKvQBCZ1SW8PoTlz4JSazCFVsLVM=',backur
l:'https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb',closeable:false};</script><script>(function(){var origins=['https://bioc-static.cdn.bcebos.com','https://bioc-static-standby.cdn.bcebos.com','https://seccaptcha.baidu.com/v1/webapi/static','https://seccaptcha-1.
baidu.com/v1/webapi/static'];var biocFacadePath='/pages/BiocFacade.js';var bootstrapPath='/pages/bfe_captcha.js';var loadAssetsWithStandby=function(path,cb){var requestOrigins=origins.slice();var doRequest=function(){if(requestOrigins.length===0){cb(new Error('load assets failed'))}else{var origin=requestOr
igins.shift();loadScript(origin+path,function(err){if(!err){cb()}else{doRequest()}})}};doRequest()};var loadBioc=function(cb){loadAssetsWithStandby(biocFacadePath,cb)};var loadBootstrap=function(cb){loadAssetsWithStandby(bootstrapPath,cb)};var handlerError=function(err){alert('页面加载失败,请刷新页面重试');console.error(err)};loadBioc(function(err){if(err){handlerError(err);return}loadBootstrap(function(err){if(err){handlerError(err)}})})})()</script></html>
2025-08-04 17:00:30 httpx INFO (_client.py:1740) - HTTP Request: GET https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb "HTTP/1.1 403 Forbidden"
2025-08-04 17:00:30 MediaCrawler ERROR (client.py:67) - Request failed, method: GET, url: https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb, status code: 403
2025-08-04 17:00:30 MediaCrawler ERROR (client.py:68) - Request failed, response: <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible"content="IE=edge"><meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>百
安全验证</title><style>body{margin:0;padding:0}</style></head><body></body><!--loadScript--><script>function ieOnEnd(script,cb){script.onreadystatechange=function(){if(this.readyState!=='complete'&&this.readyState!=='loaded'){return}this.onreadystatechange=null;cb(null,script)}}function stdOnEnd(script,cb b
){script.onload=function(){this.onerror=this.onload=null;cb(null,script)};script.onerror=function(e){this.onerror=this.onload=null;cb(new Error(`Failed to load ${this.src}`),script)}}function loadScript(src,opts,cb){var script=document.createElement('script');if(typeof opts==='function'){cb=opts;opts={}}opt
s=opts||{};cb=cb||function(){};script.type=opts.type||'text/javascript';script.charset=opts.charset||'utf8';script.async='async'in opts?!!opts.async:true;script.src=src;if(opts.attrs){setAttributes(script,opts.attrs)}if(opts.text){script.text=''+opts.text}var onend='onload'in script?stdOnEnd:ieOnEnd;onend(s
cript,cb);if(!script.onload){stdOnEnd(script,cb)}document.head.appendChild(script)}</script><script>window.BIOC_OPTIONS={ak:'MtwiTOYhbgACaxGXidGoCM3MjRimIPL1',subid:'tb_pc_user_home_bfe',ext:'6mbd07BnLa08mBTvCZVuuks5FWmWT+68gs99hAdqRsdYOUDN9KXM0GDUst9nzW9PoEblMS3AUnWawo5g9muDzNSJw+KWtxFmmP7SCQA2xeQ=',backur
l:'https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb',closeable:false};</script><script>(function(){var origins=['https://bioc-static.cdn.bcebos.com','https://bioc-static-standby.cdn.bcebos.com','https://seccaptcha.baidu.com/v1/webapi/static','https://seccaptcha-1.
baidu.com/v1/webapi/static'];var biocFacadePath='/pages/BiocFacade.js';var bootstrapPath='/pages/bfe_captcha.js';var loadAssetsWithStandby=function(path,cb){var requestOrigins=origins.slice();var doRequest=function(){if(requestOrigins.length===0){cb(new Error('load assets failed'))}else{var origin=requestOr
igins.shift();loadScript(origin+path,function(err){if(!err){cb()}else{doRequest()}})}};doRequest()};var loadBioc=function(cb){loadAssetsWithStandby(biocFacadePath,cb)};var loadBootstrap=function(cb){loadAssetsWithStandby(bootstrapPath,cb)};var handlerError=function(err){alert('页面加载失败,请刷新页面重试');console.error(err)};loadBioc(function(err){if(err){handlerError(err);return}loadBootstrap(function(err){if(err){handlerError(err)}})})})()</script></html>
2025-08-04 17:00:31 httpx INFO (_client.py:1740) - HTTP Request: GET https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb "HTTP/1.1 403 Forbidden"
2025-08-04 17:00:31 MediaCrawler ERROR (client.py:67) - Request failed, method: GET, url: https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb, status code: 403
2025-08-04 17:00:31 MediaCrawler ERROR (client.py:68) - Request failed, response: <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible"content="IE=edge"><meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>百
安全验证</title><style>body{margin:0;padding:0}</style></head><body></body><!--loadScript--><script>function ieOnEnd(script,cb){script.onreadystatechange=function(){if(this.readyState!=='complete'&&this.readyState!=='loaded'){return}this.onreadystatechange=null;cb(null,script)}}function stdOnEnd(script,cb b
){script.onload=function(){this.onerror=this.onload=null;cb(null,script)};script.onerror=function(e){this.onerror=this.onload=null;cb(new Error(`Failed to load ${this.src}`),script)}}function loadScript(src,opts,cb){var script=document.createElement('script');if(typeof opts==='function'){cb=opts;opts={}}opt
s=opts||{};cb=cb||function(){};script.type=opts.type||'text/javascript';script.charset=opts.charset||'utf8';script.async='async'in opts?!!opts.async:true;script.src=src;if(opts.attrs){setAttributes(script,opts.attrs)}if(opts.text){script.text=''+opts.text}var onend='onload'in script?stdOnEnd:ieOnEnd;onend(s
cript,cb);if(!script.onload){stdOnEnd(script,cb)}document.head.appendChild(script)}</script><script>window.BIOC_OPTIONS={ak:'MtwiTOYhbgACaxGXidGoCM3MjRimIPL1',subid:'tb_pc_user_home_bfe',ext:'PQoe+IssmaOK3xf4NlXXSzFgTDdPVg/S41/uxBp0dZHb/T1Vu+B3Gq7BW4i98n6/tNgg2TZ7RGmo6HSuwfXm0wzZpbV0UAymMGAOAOE+Nz8=',backur
l:'https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb',closeable:false};</script><script>(function(){var origins=['https://bioc-static.cdn.bcebos.com','https://bioc-static-standby.cdn.bcebos.com','https://seccaptcha.baidu.com/v1/webapi/static','https://seccaptcha-1.
baidu.com/v1/webapi/static'];var biocFacadePath='/pages/BiocFacade.js';var bootstrapPath='/pages/bfe_captcha.js';var loadAssetsWithStandby=function(path,cb){var requestOrigins=origins.slice();var doRequest=function(){if(requestOrigins.length===0){cb(new Error('load assets failed'))}else{var origin=requestOr
igins.shift();loadScript(origin+path,function(err){if(!err){cb()}else{doRequest()}})}};doRequest()};var loadBioc=function(cb){loadAssetsWithStandby(biocFacadePath,cb)};var loadBootstrap=function(cb){loadAssetsWithStandby(bootstrapPath,cb)};var handlerError=function(err){alert('页面加载失败,请刷新页面重试');console.error(err)};loadBioc(function(err){if(err){handlerError(err);return}loadBootstrap(function(err){if(err){handlerError(err)}})})})()</script></html>
Traceback (most recent call last):
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\.venv\lib\site-packages\tenacity\_asyncio.py", line 50, in __call__
result = await fn(*args, **kwargs)
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\media_platform\tieba\client.py", line 69, in request
raise Exception(f"Request failed, method: {method}, url: {url}, status code: {response.status_code}")
Exception: Request failed, method: GET, url: https://tieba.baidu.com/home/main?id=tb.1.52671c8a.Jjq52DtBjR5ibxyypGmfxw?t=1582477803&fr=pb, status code: 403
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\main.py", line 78, in <module>
asyncio.get_event_loop().run_until_complete(main())
File "C:\Users\xiangzirui\AppData\Roaming\uv\python\cpython-3.9.23-windows-x86_64-none\lib\asyncio\base_events.py", line 647, in run_until_complete
return future.result()
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\main.py", line 65, in main
await crawler.start()
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\media_platform\tieba\core.py", line 88, in start
await self.get_creators_and_notes()
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\media_platform\tieba\core.py", line 297, in get_creators_and_notes
creator_page_html_content = await self.tieba_client.get_creator_info_by_url(
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\media_platform\tieba\client.py", line 310, in get_creator_info_by_url
page_content = await self.request(method="GET", url=creator_url, return_ori_content=True)
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\.venv\lib\site-packages\tenacity\_asyncio.py", line 88, in async_wrapped
return await fn(*args, **kwargs)
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\.venv\lib\site-packages\tenacity\_asyncio.py", line 47, in __call__
do = self.iter(retry_state=retry_state)
File "C:\Users\xiangzirui\PyCharmMiscProject\MediaCrawler\.venv\lib\site-packages\tenacity\__init__.py", line 326, in iter
raise retry_exc from fut.exception()
tenacity.RetryError: RetryError[<Future at 0x29e75083910 state=finished raised Exception>]
📷 错误截图
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the traceback path in media_platform/tieba/core.py and media_platform/tieba/client.py, then inspect the request made by get_creator_info_by_url for the Tieba creator page. Reproduce the 403 response using the stated cookie-login configuration and compare it with the returned security-verification page. Done means the cause and a verified resolution or limitation are clearly established.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100