docker快速启动proxy_pool项目

项目地址:https://github.com/jhao104/proxy_pool

0x01 搭建redis

该项目是基于redis的,所以我们首先需要一个redis,这里我还是选择用docker快速启动一个

  • 端口映射出来,可用于公网
docker run -d --name redis -p 6380:6379 redis --requirepass yourpassword
  • 不端口映射,直接在vps上内部连接
docker run -d --name redis  redis --requirepass yourpassword

0x02 查看容器内ip

如果你第一步中选择了映射,呢么就可以直接跳到0x03 启动项目 中直接运行了,如果不是,那么你就需要知道启动的实例的内网ip,但是当我们docker exec 进去的时候会发现并没有相关的ip addr的环境,懒得安装了,直接在本机用如下命令

docker inspect redis

这里的redis是容器的name,在结果中找到如下所示即为容器内网ip(可与本机通信)

本机可以ping通

0x03 启动项目

直接替换密码,ip以及响应的端口即可,选择映射出来的话再开放防火墙策略就可以通过公网ip访问了

docker run -d --env DB_CONN=redis://:yourpassword@172.17.0.2:6379/0 -p 5010:5010 jhao104/proxy_pool:latest

0x04 简单使用

  • Api

启动web服务后, 默认配置下会开启 http://127.0.0.1:5010 的api接口服务:

api method Description params
/ GET api介绍 None
/get GET 随机获取一个代理 可选参数: ?type=https 过滤支持https的代理
/pop GET 获取并删除一个代理 可选参数: ?type=https 过滤支持https的代理
/all GET 获取所有代理 可选参数: ?type=https 过滤支持https的代理
/count GET 查看代理数量 None
/delete GET 删除代理 ?proxy=host:ip
  • 爬虫使用

  如果要在爬虫代码中使用的话, 可以将此api封装成函数直接使用,例如:

import requests

def get_proxy():
return requests.get("http://127.0.0.1:5010/get/").json() def delete_proxy(proxy):
requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy)) # your spider code def getHtml():
# ....
retry_count = 5
proxy = get_proxy().get("proxy")
while retry_count > 0:
try:
html = requests.get('http://www.example.com', proxies={"http": "http://{}".format(proxy)})
# 使用代理访问
return html
except Exception:
retry_count -= 1
# 删除代理池中代理
delete_proxy(proxy)
return None

剩下具体的可以去github看文档

0x05 后续

后续的话可以使用docker-compose,然后编写yml文件等等操作来实现更“自动化”

docker快速启动proxy_pool项目的更多相关文章

  1. 使用Yeoman快速启动AngularJS项目开发

    本博客停止更新,请访问新个人博客:owenchen.net 前言 博客迁移到了BAE上,http://owenchen.net/,以后的文章会首发在自己的博客上,随后在博客园发布. 很久没有写文章了, ...

  2. docker快速部署本地项目到服务器(tomcat8+mysql8)

    目标是:将本地运行的spring项目,部署到服务器上 为什么使用docker? 环境隔离 服务器上,各种环境交杂,使用docker,能清楚的把各个项目进行隔离,不单维护的人员方便,也会省去很多维护这些 ...

  3. 开发环境使用docker 快速启动 单机 RocketMq

    镜像说明 https://cr.console.aliyun.com/?spm=5176.2020520001.1001.8.kpaxIC&accounttraceid=176ddc4e-62 ...

  4. 使用docker简单启动springboot项目

    1.搭建docker环境 需要linux系统必须是centOS7以上 执行一下命令: yum install epel-release –y yum clean all yum list 2.安装 y ...

  5. Docker 快速部署 Django项目到云服务器

    项目结构: 1,dockerfile FROM python:3.7 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY pip.conf /roo ...

  6. docker快速启动脚本

    #!/bin/sh PID=$(docker inspect --format "{{.State.Pid}}" $1) nsenter -t $PID -u -i -n -p n ...

  7. pycharm 快速启动Django项目和python程序

    Django 设置 *.py

  8. 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

    目录 前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文 ...

  9. win8.1快速启动选项突然消失了怎么办?

    win8开始提供的快速启动功能是一种混合式的休眠模式,Windows系统 在关机时将系统的信息保存到硬盘上的一个文件中来实现下一次的快速启动.当再次启动电脑时, Windows 使用该系统信息文件来恢 ...

  10. IDEA远程快速部署SpringBoot项目到Docker环境

    一:基础准备 1.首先在linux服务器安装Docker环境,具体安装步骤及Docker使用参考官网或网络资料(这里重点是快速部署项目到Docker环境) 2.配置Docker远程连接端口 1.vim ...

随机推荐

  1. JavaWeb学习笔记第二弹

    (续集)DQL:查询操作 1.排序查询 排序方式:(仅有一个排序参照时) 1.升序:ASC(默认) 命令:**select * from 表名 order by 列名 (asc);** 2.降序:DE ...

  2. windows cmd基础命令

    cmd md 新建目录rd 删除目录(非空目录)rd 删除目录下所有文件cd 改变当前目录cd .. 返回上一级目录cd \ 返回根目录d: 切换盘符到D盘dir 显示当前目录下的文件del 1.tx ...

  3. 简述SpringAOP的实现原理

    ​ Spring默认采取的动态代理机制实现AOP,当动态代理不可用时 (代理类无接口)会使用CGlib机制. Spring提供了两种方式来生成代理对象:JDKProxy和Cglib,具体使用哪种方式生 ...

  4. 递推求解DAG最长路径长度及最长路径条数

    说明 在一般图中,求解最长路或最短路只能通过最短路算法解决 但是在DAG中,由于不存在环,因此可以通过递推,以线性复杂度计算处最长路或最短路.当然需要首先对有向图进行Tarjan缩点转化为DAG 例题 ...

  5. new做了哪些事情,手写一个new

    1)创建一个空对象,将构造函数中的this指向这个空对象 2)将空对象的__proto__指向构造函数的prototype原型 3)执行构造函数里面的代码,为这个空对象添加属性和方法 4)返回一个新的 ...

  6. Hyperf框架环境搭建

    https://hyperf.wiki/2.2/#/README 1.PHP 7.2 以上查看PHP : php -vcurl 127.0.0.1:9501 查看是否装swoole: php --ri ...

  7. 一些随笔No.3

    1.开发应以业务为导向,技术只是手段 2.视觉上和程序上不一定是完全符合 比如,我所说的阻塞是视觉层面,或者是对用户而言的阻塞,而不是程序意义上的.我也许会传完参的同时销毁原组件,生成一个看起来一模一 ...

  8. 股票K线图概要——R语言

    K线图是200多年前日本人发明的,后来传入了美国.K线图本来就是对当前数据的可视化显示而已,但是越来越多的人对K线图做出了痴迷的分析和解读,有众多追随者也根据K线图指导自己的具体行动,因此,K线图在实 ...

  9. [数据库/MySQL]数据库备份与升级:MySQL Percona(RPM) 5.7.24-27 升级到 5.7.31-34

    1 数据库升级方式:RPM包方式升级 [亲测有效] 环境 OS: CENTOS 7 DB: MYSQL 5.7.24-27 1.1 数据库备份 备份以防止升级失败 备份数据库的2个主要方法: 1)用M ...

  10. 面向对象编程(python)和部分面向对象高级编程

    1.类和对象 在python中定义类 class 类名(首字母最好大写)Student (Object(父类)): def __init__(self): self.属性 1= 参数1 self.属性 ...