AccountPool

简易高效的账号池,提供如下功能:

定时模拟登录账号,将 Cookies 或 JWT 等信息存储到 Redis 数据库。

定时测试,剔除不可用 Cookies 或 JWT。

提供 API,随机取用测试通过的可用 Cookies 或 JWT。

使用要求

可以通过两种方式来运行账号池,一种方式是使用 Docker(推荐),另一种方式是常规方式运行。

Docker

如果使用 Docker,则需要安装如下环境:

Docker

Docker-Compose

常规方式

常规方式要求有 Python 环境、Redis 环境,具体要求如下:

Python>=3.6

Redis

Docker 运行

如果安装好了 Docker 和 Docker-Compose,只需要一条命令即可运行。

docker-compose up

运行结果类似如下:

redis | 1:C 09 Oct 2020 18:20:13.963 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

redis | 1:C 09 Oct 2020 18:20:13.963 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=1, just started

redis | 1:M 09 Oct 2020 18:20:13.964 * RDB memory usage when created 0.83 Mb

redis | 1:M 09 Oct 2020 18:20:13.964 * DB loaded from disk: 0.000 seconds

redis | 1:M 09 Oct 2020 18:20:13.964 * Ready to accept connections

accountpool | 2020-10-09 18:20:14,089 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.

accountpool | 2020-10-09 18:20:14,091 INFO supervisord started with pid 1

accountpool | 2020-10-09 18:20:15,094 INFO spawned: 'generator' with pid 9

accountpool | 2020-10-09 18:20:15,096 INFO spawned: 'server' with pid 10

accountpool | 2020-10-09 18:20:15,098 INFO spawned: 'tester' with pid 11

accountpool | 2020-10-09 18:20:16,280 INFO success: generator entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

accountpool | 2020-10-09 18:20:16,280 INFO success: server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

accountpool | 2020-10-09 18:20:16,280 INFO success: tester entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

可以看到 Redis、Generator、Server、Tester 都已经启动成功。

常规方式运行

如果不使用 Docker 运行,配置好 Python、Redis 环境之后也可运行,步骤如下。

安装和配置 Redis

本地安装 Redis、Docker 启动 Redis、远程 Redis 都是可以的,只要能正常连接使用即可。

首先可以需要一下环境变量,代理池会通过环境变量读取这些值。

设置 Redis 的环境变量有两种方式,一种是分别设置 host、port、password,另一种是设置连接字符串,设置方法分别如下:

设置 host、port、password,如果 password 为空可以设置为空字符串,示例如下:

export REDIS_HOST='localhost'

export REDIS_PORT=6379

export REDIS_PASSWORD=''

export REDIS_DB=0

或者只设置连接字符串:

export REDIS_CONNECTION_STRING='redis://[password]@host:port/db'

如果没有密码也要设置为:

export REDIS_CONNECTION_STRING='redis://@host:port/db'

这里连接字符串的格式需要符合 redis://[password]@host:port/db 的格式,注意不要遗漏 @。

以上两种设置任选其一即可。

安装依赖包

这里强烈推荐使用 Conda

或 virtualenv 创建虚拟环境,Python 版本不低于 3.6。

然后 pip 安装依赖即可:

pip3 install -r requirements.txt

运行代理池

两种方式运行账号池,一种是 Tester、Generator、Server 全部运行,另一种是按需分别运行。

一般来说可以选择全部运行,命令如下:

python3 run.py

运行之后会启动 Tester、Generator、Server,这时访问 http://localhost:6777//random 即可获取一个随机可用代理。

或者如果你弄清楚了账号池的架构,可以按需分别运行,命令如下:

python3 run.py --processor getter

python3 run.py --processor tester

python3 run.py --processor server

这里 processor 可以指定运行 Tester、Generator 还是 Server。

可配置项

账号池可以通过设置环境变量来配置一些参数。

开关

ENABLE_TESTER:允许 Tester 启动,默认 true

ENABLE_GENERATOR:允许 Generator 启动,默认 true

ENABLE_SERVER:运行 Server 启动,默认 true

环境

APP_ENV:运行环境,可以设置 dev、test、prod,即开发、测试、生产环境,默认 dev

APP_DEBUG:调试模式,可以设置 true 或 false,默认 true

Redis 连接

REDIS_HOST:Redis 的 Host

REDIS_PORT:Redis 的端口

REDIS_PASSWORD:Redis 的密码

REDIS_DB:Redis 的数据库索引,如 0、1

REDIS_CONNECTION_STRING:Redis 连接字符串

REDIS_KEY:Redis 储存代理使用字典的名称

处理器

CYCLE_TESTER:Tester 运行周期,即间隔多久运行一次测试,默认 20 秒

CYCLE_GETTER:Getter 运行周期,即间隔多久运行一次代理获取,默认 100 秒

API_HOST:代理 Server 运行 Host,默认 0.0.0.0

API_PORT:代理 Server 运行端口,默认 6777

API_THREADED:代理 Server 是否使用多线程,默认 true

日志

LOG_DIR:日志相对路径

LOG_RUNTIME_FILE:运行日志文件名称

LOG_ERROR_FILE:错误日志文件名称

部署

本项目提供了 Kubernetes 部署脚本,如需部署到 Kubernetes,执行如下命令即可:

cat deployment.yml | sed 's/\${TAG}/latest/g' | kubectl apply -f -

待开发

前端页面管理

使用情况统计分析

如有一起开发的兴趣可以在 Issue 留言,非常感谢!

LICENSE

MIT

python account_GitHub - Python3WebSpider/AccountPool: Account Pool相关推荐

  1. Python 多进程的进程池pool运行时报错:ValueError: Pool not running

    本文仅供学习交流使用,如侵立删!demo下载见文末 Python 多进程的进程池pool运行时报错:ValueError: Pool not running def main(self, num):& ...

  2. python 多进程 multiprocessing 进程池 pool apply_async()函数与apply()函数的用法

    apply函数主要用于传递不定参数,主进程会被阻塞到函数执行结束.也就是说只有apply里面的内容被执行完了,才会进行执行主函数的内容. 参考文章1:python进程池Pool的apply与apply ...

  3. python 多进程multiprocessing进程池pool tensorflow-yolov3 报错 MemoryError

    进程数设置为1-9个都能正常运行,设置成10个就开始报错,怪事! D:\20191031_tensorflow_yolov3\python\python.exe D:/20191031_tensorf ...

  4. python 多进程 multiprocessing 进程池pool报错 in join assert self._state in (CLOSE, TERMINATE) AssertionError

    原因:pool.close()关闭进程池,不再接受新的任务.join之前必须加上close(),否则会报错 在进程池操作join()时.在前面加上pool.close()即可 参考文章1:Python ...

  5. python进程池:multiprocessing.pool

    阅读目录 例1:使用进程池 例2:使用进程池(阻塞) 例3:使用进程池,并关注结果 例4:使用多个进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操 ...

  6. Python多进程4 进程池——Pool

    原文地址 学习来源 分类目录--多进程 是multiprocessing模块下的一个类,是一种创建多进程的更加简便的方式,可以更加方便的分配任务与传递参数. pool = mp.Pool(proces ...

  7. python 协程池和pool.map用法

    一.问题描述 现在有一段代码,需要扫描一个网段内的ip地址,是否可以ping通. 执行起来效率太慢,需要使用协程. #!/usr/bin/env python # -*- coding: utf-8 ...

  8. python 多进程multiprocessing进程池pool tensorflow-yolov3 报错TypeError: 'ApplyResult' object is not iterable

    首先,代码结构它长这样: 可每次调用线程池进行识别时,就会报如下错误: D:\20191031_tensorflow_yolov3\python\python.exe D:/20191031_tens ...

  9. python中的进程池Pool

    初始化Pool时,可以指定⼀个最大进程池,当有新进程提交时,如果池还没有满,那么就会创建新进程请求:但如果池中达到最大值,那么就会等待,待池中有进程结束,新进程来执行. 非阻塞式:apply_asyn ...

最新文章

  1. ASA用ASDM管理时报unable to launch device manager xxx.xxx.xxx.xxx
  2. 软件作坊模式工件应用论
  3. PowerDesigner 逆工程生成物理模型图解
  4. 内核探测工具systemtap简介
  5. 图像连通域标记算法研究
  6. Linux_linux常用工具之make/makefile详解
  7. 【ZOJ - 3778】Talented Chef(贪心)
  8. 自然语言处理要解决的问题
  9. 如何卸载mingw_minGW在windows安装 | 学步园
  10. redfish、ipmi返回状态码
  11. JCEF vs JxBrowser
  12. 初了解IsPostBack
  13. linux磁盘刻录ISO工具,技术|Ubuntu下的三个好用的CD/DVD刻录工具
  14. 云计算机网速慢,电脑网速慢是什么原因 十点助你快速解决【图文】
  15. 国开电大 财务报表分析 形考任务
  16. 【PR学习笔记】PR学习笔记之PR快捷键
  17. 转录组入门(2):读文章拿到测序数据
  18. 对象转SortedMap,字段按照首字母排序
  19. CUDA+pytorch+DGL安装
  20. 如何让空调少用电,空气能热泵控制系统是这样实现的

热门文章

  1. 设置USB无线网卡为监听模式大学霸IT达人
  2. Maltego更新到4.2.6
  3. 列表根据下标取值_散列表(上):Word文档中的单词拼写检查功能是如何实现的?...
  4. python开发效率最高_公认8个效率最高的爬虫框架
  5. no python application found_用Nginx部署Django服务no python application found
  6. php 判断是否gzip,PHP网站判断页面文件或图片是否经过gzip压缩
  7. 可穿戴的脑机接口设备将运动意念转化为行动
  8. 国际10-20标准电极位置
  9. ios 系统提示框_经验分享:新购买移动硬盘格式化为Windows系统和Mac系统同时可以使用的方法...
  10. 6万车主使用智能驾驶不给钱,理想汽车竟然还说越多越好?