golang-proxy v3.0
golang-proxy是一个开箱即用的高匿代理抓取工具, 它是语言无关的
项目地址: https://github.com/storyicon/golang-proxy
中文文档
Golang-Proxy – 简单高效的免费代理抓取工具通过抓取网络上公开的免费代理,来维护一个属于自己的高匿代理池,用于网络爬虫、资源下载等用途。
在 v3.0
有哪些新特性
- 依旧提供了高度灵活的 API 接口,在启动主程序后,即可通过在浏览器访问
localhost:9999/all
与localhost:9999/random
直接获取抓到的代理!甚至可以使用localhost:9999/sql?query=
来执行一些简单的 SQL 语句来自定义代理筛选规则! - 依旧提供
Windows
、Linux
、Mac
开箱即用版!
Download Release v3.0 - 支持自动对代理类型进行判断, 可以通过
schemeType
判定代理对http
和https
的支持程度 - 支持了MySQL数据库, 详情请见 Config
- 支持单独启动服务, 在启动编译好的二进制文件时, 通过
-mode=
来指定是否单独启动producer
/consumer
/assessor
/service
- 重新设计了数据表, 请注意, 这意味着
API
接口发生了变动 - 重新设计了
源
的数据结构, 去除了filter
等字段, 请注意, 这意味着v2.0
的源在直接提供给v3.0
使用时可能会出现一些问题 - 更新了一些
源
- 不再支持
-source
启动参数
如何使用 golang-proxy
1. 使用开箱即用版本
Release 页面 根据系统环境提供了一些压缩包,将他们解压后执行即可。
开箱即用版下载地址: Download Release v3.0
下载完成后, 将压缩包中的二进制文件和 source
目录解压到同一个位置, 启动二进制文件即可, 程序将会启动下面这些服务:
producer
: 周期性的抓取source
目录中定义的源, 将抓取到的代理写入到crude_proxy
表中consumer
: 周期性的从crude_proxy
中读取一定数量的代理, 判断它们的代理类型以及可用性, 将它们写入到proxy
表中assessor
: 周期性的从proxy
表中读取一定数量的代理, 评估它们的质量service
:golang-proxy
提供的 http api 接口, 使你可以通过localhost:9999/all
,localhost:9999/random
,localhost:9999/sql?query=
这三个接口来筛选和获取crude_proxy
和proxy
表中的代理
当你启动编译好的二进制文件时, 默认这些服务会依次启动, 但是在 v3.0
版本, 你可以通过添加 -mode
启动参数来指定单独启动某个服务, 比如:
golang-proxy -mode=service
这样运行, 将只会启动 service
服务, 在启动了 service
之后, 你可以在浏览器中访问以下接口, 获得相应的代理:
url | description |
---|---|
localhost:9999/all |
获取 proxy 表中所有已经抓取到的代理 |
localhost:9999/all?table=proxy |
获取 proxy 表中所有已经抓取到的代理 |
localhost:9999/all?table=crude_proxy |
获取 crude_proxy 表中所有已经抓取到的代理 |
localhost:9999/random |
从 proxy 表中随机获取一条代理 |
localhost:9999/random?table=proxy |
从 proxy 表中随机获取一条代理 |
localhost:9999/random?table=crude_proxy |
从 crude_proxy 表中随机获取一条代理 |
localhost:9999/sql?query= |
在query= 后加上SQL 语句, 返回SQL执行结果, 只支持较为简单的查询语句 |
请注意, crude_proxy
只是抓取到的代理的临时储存表, 不能保证它们的质量, 而proxy
表中的代理将会不断得到 assessor
的评估, proxy
表中的 score
字段可以较为全面的反映一个代理的质量, 质量较低时会被删除
接口示例: localhost:9999/sql
例如访问 localhost:9999/sql?query=SELECT * FROM PROXY WHERE SCORE > 5 ORDER BY SCORE DESC
, 将会返回 proxy
表中所有分数大于5的代理, 并按照分数从高到低返回
{
"error": "",
"message": [
{
"id": 2,
"ip":