惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
aimingoo的专栏
aimingoo的专栏
U
Unit 42
GbyAI
GbyAI
H
Help Net Security
A
Arctic Wolf
SecWiki News
SecWiki News
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Blog — PlanetScale
Blog — PlanetScale
B
Blog
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
C
Check Point Blog
O
OpenAI News
Microsoft Security Blog
Microsoft Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
Webroot Blog
Webroot Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Palo Alto Networks Blog
A
About on SuperTechFans
S
SegmentFault 最新的问题
Recent Announcements
Recent Announcements
S
Schneier on Security
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
Jina AI
Jina AI
The Hacker News
The Hacker News
V2EX - 技术
V2EX - 技术
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
腾讯CDC
罗磊的独立博客
G
GRAHAM CLULEY
L
LINUX DO - 热门话题
雷峰网
雷峰网
博客园 - 【当耐特】
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
美团技术团队
M
MIT News - Artificial intelligence
Engineering at Meta
Engineering at Meta
Hacker News: Ask HN
Hacker News: Ask HN
S
Security Affairs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客

博客园 - 一名程序媛呀

Anki插件开发必知必会:钩子函数与右键菜单定制 httpx 传参总报错?这次把 GET、POST、文件上传到响应处理的坑给你一次填平 从卡顿到丝滑:FastAPI 调用外部 API 的正确姿势(httpx 实战) 还在 XHR、Fetch 和 Axios 之间纠结?我踩过的坑,希望你一个都不用碰到 你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南 Uvicorn、Gunicorn 傻傻分不清?FastAPI 生产部署避坑指南 Termux里的二进制和脚本,到底怎么运行才不踩坑?Termux-service 保活妙招! 刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API 别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了 掏出手机就能搭个 WebDAV 同步服务器?这操作有点香 别只盯着GitBook了!这个文档神器让你的笔记秒变网站 FastAPI 身份验证总踩坑?这份 FastAPI Users “避坑指南”请收好 旧手机别扔!用 Termux 搭个私人云盘,比网盘香多了 你的FastAPI又在服务器上“跑不起来”了?来,今天咱把打包这件事彻底聊透 写页面时别再把 Element Plus 整个搬进来啦!Vue3按需加载的坑我帮你踩平了 前端包管理咋选?我从npm叛逃到pnpm的血泪史(附避坑指南) 聊聊 fetch 使用中我踩过的那些坑和正确打开方式 FastApiAdmin 后端接口开发好了,前端管理界面怎么调用与显示? 给 FastApiAdmin 加个“会议纪要”模块,我把后端二次开发的坑踩了个遍 我用了FastApiAdmin后,连夜把踩过的坑都整理出来了 告别 Typora 后的新欢:我把所有笔记迁移到了 Obsidian 这个“第二大脑” 你的Agent API还在裸奔?从认证到沙箱,我用FastAPI搭了几道防线 让 FastAPI Agent 思考不阻塞:手把手教你实现异步任务与后台处理方案 让FastAPI Agent真正记住你:聊聊会话记忆与持久化存储的落地实践 FastAPI Agent 函数调用实战:我让 AI 学会了“自己动手查天气“ 初探:用 FastAPI 搭建你的第一个 AI Agent 接口 FastAPI 少有人提的实用技巧:把 Depends 依赖提到路由层,代码少写60% FastAPI 生产环境静态文件完全指南:从 /favicon.ico 404 到 HSTS 混合内容,一次全根治 用了loguru我才明白,Python日志还能这么写 FastAPI 后台任务:BackgroundTasks 的使用场景与注意事项 FastAPI配置管理避坑指南:从硬编码到 .env 与 pydantic_settings 类,连路由用法都给你捋清楚 FastAPI 文件上传避坑全指南:分块存盘、类型校验与安全兜底 FastAPI + Pydantic 模型终极实战手册:从能跑就行到固若金汤,这些技巧你一定用得上 FastAPI + SQLAlchemy 2.0 通用CRUD操作手册 —— 从同步到异步,一次讲透 FastAPI订单防超卖实战:从数据库锁到Saga分布式事务,这一篇给你理清了 FastAPI 生产环境避坑指南:用 Alembic 管理数据库迁移,别再手动改表结构了! FastAPI服务半夜又挂了?先别急着重启,查查你的数据库连接池“池子”是不是漏了 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 Vue 3 组合式 API 香是香,但从Vue2迁移时你可别像我当初一样踩进这 3 个深坑里 我用fastapi-scaff搭了个项目,两天工期缩到两小时,老板以为我开挂了 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! FastAPI自动生成的API文档太丑?我花了一晚上把它改成了客户愿意付费的样子 告别手写 API 胶水代码:FastAPI 与 Vue 的“契约自动机” OpenAPI 实战 FastAPI + Vue 前后端分离实战:我的项目结构“避坑指南” FastAPI + Celery 实战:异步任务里调用 Redis 和数据库的全解析,及生产级组织方案 FastAPI里玩转Redis和数据库的正确姿势,别让异步任务把你坑哭了! FastAPI + Celery 实战:异步任务的坑与解法,我帮你踩了一遍 FastAPI子应用挂载:别再让root_path坑你一夜 FastAPI项目半夜报警吵醒你?聊聊告警这事儿怎么搞! 别再数据线了!用FastAPI 5分钟搭个局域网文件+剪贴板神器 FastAPI单元测试实战:别等上线被喷才后悔,TestClient用对了真香! FastAPI状态共享秘籍:别再让中间件、依赖和路由“各自为政”了! FastAPI实战:WebSocket vs Socket.IO,这回真给我整明白了! 从0到1,FastAPI + PostgreSQL + Tortoise ORM 实战避坑指南 FastAPI + PostgreSQL 实战:给应用装上“缓存”和“日志”翅膀 FastAPI + PostgreSQL 实战:从入门到不踩坑,一次讲透
写爬虫时用了代理还被封?Python 代理的那些隐藏坑,我替你踩明白了
一名程序媛呀 · 2026-06-11 · via 博客园 - 一名程序媛呀

摘要: 写爬虫或调用API时,IP被封是家常便饭。很多人以为加上代理就万事大吉,结果反而更慢、报错更多
这篇文章从实战出发,一次性讲透http、https、socks代理的区别和用法,教你如何高效遍历代理列表,并扒开那些官方文档不会告诉你的常见坑。
读完你会知道,代理用不好,比不用还危险。

😫 你是不是也遇到过这种糟心事儿?

辛辛苦苦写了个爬虫,本地跑得飞起,一上量就“咔咔”报超时。赶紧找免费代理换上,结果请求要么慢得像蜗牛,要么直接返回一堆 ProxyError,心态原地爆炸。

其实,代理的配置远不止往 proxies 参数里塞个字典那么简单。今天咱们就把这事儿彻底聊透。

👩‍💻我是爱折腾的一名程序媛,喜欢研究全栈开发的各种实践,热爱分享踩坑后的收获与思考,也享受用代码写出各种实用小工具解决问题的快乐。

如果你也在技术这条路上向前走,关注我,愿我们能彼此陪伴,一起成为更好的自己 🌱

🎯 这篇文章能帮你解决什么?

带你分清楚 httphttpssocks 代理分别该填在哪儿,什么时候用。

更重要的是,给你一套能直接用的遍历代理列表防封策略,并避开那些一踩一个准的坑。

🗺️ 主要内容脉络

🔹 代理的“双通道”到底怎么回事

🔹 http、https、socks 代理实战案例

🔹 如何遍历代理列表才真正有效

🔹 血泪换来的常见问题与解决方案

🔍 代理的双通道,九成人一开始都搞混

你向 http://example.com 发请求时,可以走 HTTP 代理;
https://example.com 发请求时,可以走 HTTPS 代理。
但 requests 库里的写法容易让人恍惚。

proxies = {

  'http''http://127.0.0.1:8080',

  'https''http://127.0.0.1:8080',

}

看到没,https 这个键对应的值依然以 http:// 开头。
要注意,这里填的是代理服务本身的协议,不是你要请求的目标网站协议。

你的代理服务器是 HTTP 服务,无论转发的是 HTTP 还是 HTTPS 流量,都要写 http://

不过,如果你用的是支持 HTTPS 的加密代理,就可以填 https://,这样你和代理之间的连接也会被加密,多一层保护。

⚙️ 三种代理,怎么用才对?

🔹 HTTP 代理

最基础,只转发 HTTP 请求。适合爬取纯 HTTP 站点,或者内网穿透。

import requests

proxies = {

    'http''http://user:pass@proxy_ip:port',

}

resp = requests.get('http://httpbin.org/ip', proxies=proxies, timeout=10)

print(resp.text)

🔹 HTTPS 代理

你可能会问,刚才不是说 https 键值可以填 http:// 吗?

是的,但这里如果填 https://,意味着你与代理之间是 TLS 加密隧道,别人抓包也看不到你在请求什么。对安全要求高的场景才用。

proxies = {

    'https''https://secure_proxy:port',

}

resp = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=10)

🔹 SOCKS 代理

这玩意儿更底层,SOCKS 工作在传输层,它就是个“管道工”,才不管你管道里流的是水(HTTP)还是天然气(FTP)。

SOCKS代理分为两种版本:SOCKS4SOCKS5
SOCKS4仅支持TCP协议,而SOCKS5不仅支持TCP,还支持UDP协议,并提供身份验证机制和服务器端域名解析等功能。

Python 想用它,得先装 pip install 'requests[socks]'

proxies = {

    'http''socks5://127.0.0.1:1080',

    'https''socks5://127.0.0.1:1080',

}

resp = requests.get('https://api.github.com', proxies=proxies, timeout=10)

💡 这里有个我亲自撞过的墙:requests 的 socks 支持不是内置的,忘了装 PySocks 就会抛出 Missing dependencies for SOCKS support,别问我怎么知道的。

🔄 代理列表怎么遍历才高效?

是不是以为直接写个 for 循环,拿一个用,报错就换下一个就完事了?没那么简单。

🔹 先校验可用性

免费代理的死亡率极高,拿来就用只会浪费时间。

用之前先拿一个稳定的网站(比如百度)做一次超短超时的探测,超时 >3 秒直接跳过。

🔹 标记失败次数

每个代理连续失败 3 次就打入“冷宫”,不要无限重试,否则整个程序会被拖死。

🔹 随机轮换,而不是顺序取

顺序取会让目标服务器看到规律,反而容易触发封禁。

random.shuffle() 打乱顺序,每次请求前从池子里随机摸一个。

给你看一个我一直在用的骨架:

import random, requests

proxy_pool = [

    'http://1.1.1.1:8080',

    'socks5://2.2.2.2:1080',

    'http://user:pass@3.3.3.3:3128',

]

def get_random_proxy():

    return random.choice(proxy_pool)

for url in urls:

    for _ in range(3):  # 最多换3次代理

        proxy = get_random_proxy()

        try:

            resp = requests.get(

                url, 

                proxies={'http': proxy, 'https': proxy}, 

                timeout=5

            )

            if resp.status_code == 200:

                # 正常处理返回信息

                break

        except:

            continue

    else:

        print(f'{url} 请求失败,已穷尽代理')

这里有一个很容易翻车的点:千万不要在遍历中把失效代理从列表里 remove,多线程下会引发索引错误。
改成把坏代理丢进一个 set 做黑名单过滤就好。

# 全局黑名单,线程安全起见可以用 set 配合锁,或者直接用 queue

bad_proxies = set()

def get_random_proxy():

    # 过滤掉黑名单里的代理

    good = [p for p in proxy_pool if p not in bad_proxies]

    if not good:

        raise Exception("所有代理都已失效")

    return random.choice(good)

def mark_bad_proxy(proxy):

    bad_proxies.add(proxy)  # 只往 set 里加,永远不删原列表

使用时,一旦请求失败就把代理丢进黑名单:

proxy = get_random_proxy()

try:

    resp = requests.get(url, proxies={'http': proxy, 'https': proxy}, timeout=5)

    if resp.status_code != 200:

        mark_bad_proxy(proxy)

except:

    mark_bad_proxy(proxy)

⚠️ 常见踩坑与急救包

🔹 代理配了但感觉没走

检查环境变量 HTTP_PROXYHTTPS_PROXY 是否被预先设置。
requests 会自动读它们,而且优先级可能比你传入的 proxies 还高。

我的习惯是:直接用 proxies 参数显式传入,并在脚本开头强制 os.environ.pop('HTTP_PROXY', None),干净利落。

🔹 用了代理后 SSL 证书报错

有些中间代理会篡改证书做 HTTPS 检查,客户端就报 SSLError

开发调试时可以临时设 verify=False,但生产环境一定要找到正确的证书链或换掉流氓代理,千万别把这条带到线上。

🔹 Session 对象要记得挂代理

如果你用 requests.Session() 保持会话,代理也得挂在 session 上:session.proxies.update(proxies),否则后续的请求又会直连,完全白搭。

🔹 SOCKS 代理的 DNS 泄露

用 SOCKS5 时默认可能在本地解析域名,代理那边只看 IP。
如果希望连 DNS 也走代理隧道,需要用 socks5h:// 协议。

细节见 PySocks 文档,这里只敲黑板:h 是关键!

💡 最后再唠几句

代理不是一个“加上就行”的开关,而是一整套容错策略。
把代理池健康检查、自动退场、随机轮换这三个原则刻进心里,你的爬虫或请求框架才能真正扛得住量。

写得再好的代码,也得靠真实流量打磨。希望这篇文章能让你少走几个月弯路。


如果今天的内容对你有帮助,不妨 点个赞,加个关注 再走,也欢迎把这篇发给同样和代理斗智斗勇的伙伴。
担心下次找不到的话,直接收藏起来,代码该抄就抄,咱不客气 😄