本文主要是介绍卧槽!我写的 Docker 镜像下载量居然突破了一百万...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是「进击的Coder」的第 365 篇技术分享
作者:崔庆才
来源:崔庆才丨静觅
“
阅读本文大概需要 6 分钟。
”今天还是照常逛 GitHub,看到了之前写的一个代理池(https://github.com/Python3WebSpider/ProxyPool)项目的一条 Issue,他问我有没有构建好的代理池 Docker 镜像。
这个自然是有的,我之前构建好了放在 Docker Hub 了,准备顺手找找发一下给他。
然后我就打开了 Docker Hub 搜了一下,proxypool,结果你猜怎么着。
第一条结果就是我写的那个镜像,如图所示:
排名居然是第一位。
然后我又看了下下载量,这个数让我震惊了。。。
1M+
一百万?我写的这个镜像在全球已经有一百万次使用了...
这着实让我震惊了一把,我没看错吧,当时瞬间懵了,迟疑了一下,问我自己:M 是百万的意思吧?
我还确认了下第二名是 10K,是一万,我的排名比他高,那应该就是了。
有人可能好奇我是这么做到这么高的,这个我真不知道,我本来以为几千次下载就差不多了,因为 GitHub 上这个项目是 2.2k,所以我觉得是不是有人误操作帮我刷量了?或许吧。
毕竟 Nginx 才 10M+:
不过据我观察,10M+ 应该是封顶,最多就显示这么多,没准可能它已经 10T+ 了呢?
算了不管了,心里就小欢喜一下吧哈哈。
另外有的朋友可能不太懂这个,想知道我写的究竟是个啥,这里就顺便再介绍下啦。
这就是个代理池,可以一键运行从网上抓取一些 HTTP 代理 IP,可以供爬虫伪装 IP 使用。
我写的这个代理池有这些功能:
定时抓取免费代理网站,简易可扩展。
使用 Redis 对代理进行存储并对代理可用性进行排序。
定时测试和筛选,剔除不可用代理,留下可用代理。
提供代理 API,随机取用测试通过的可用代理。
使用也非常简单,新建一个 docker-compose.yaml 文件,内容如下:
version: '3'
services:redis4proxypool:image: redis:alpinecontainer_name: redis4proxypoolcommand: redis-serverports:- "6379:6379"proxypool:image: 'germey/proxypool'container_name: proxypoolports:- "5555:5555"restart: alwaysenvironment:REDIS_HOST: redis4proxypool
然后使用 Docker-Compose 即可运行:
docker-compose up
运行结果类似如下:
redis | 1:M 19 Feb 2020 17:09:43.940 * DB loaded from disk: 0.000 seconds
redis | 1:M 19 Feb 2020 17:09:43.940 * Ready to accept connections
proxypool | 2020-02-19 17:09:44,200 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
proxypool | 2020-02-19 17:09:44,203 INFO supervisord started with pid 1
proxypool | 2020-02-19 17:09:45,209 INFO spawned: 'getter' with pid 10
proxypool | 2020-02-19 17:09:45,212 INFO spawned: 'server' with pid 11
proxypool | 2020-02-19 17:09:45,216 INFO spawned: 'tester' with pid 12
proxypool | 2020-02-19 17:09:46,596 INFO success: getter entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
proxypool | 2020-02-19 17:09:46,596 INFO success: server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
proxypool | 2020-02-19 17:09:46,596 INFO success: tester entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
可以看到 Redis、Getter、Server、Tester 都已经启动成功。
这时候访问 http://localhost:5555/random 即可获取一个随机可用代理。
在项目里面只需要请求这个 API,然后解析网页返回结果获取到代理就能直接用了。
关于详细的原理大家可以参考我的这篇文章:https://cuiqingcai.com/7048.html
详细的使用方法可以看项目的 README:https://github.com/Python3WebSpider/ProxyPool
欢迎大家试用提宝贵意见哈,感谢!
End
「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。
看完记得关注@进击的Coder
及时收看更多好文
↓↓↓
点个在看你最好看
这篇关于卧槽!我写的 Docker 镜像下载量居然突破了一百万...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!