Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

LubyRuffy/rproxy

Repository files navigation

rproxy

自动化的代理服务器。

背景

我们平时的工作主要是信息采集,很多平台会有拦截机制,无论是IP对应国家的拦截,还是请求频率的拦截,都会直接影响了效果。

因此需要一套系统,能够每次请求自动切换IP地址。

Feature

  • 提供api接口接收代理服务器的地址,并且验证入库
    • /check 支持
      • http
      • socks5
      • https
      • socks4
      • url/host/ip+port
    • 支持并发限制
    • 失败也要记录日志
    • 支持延迟参数(以服务器所在地为准,因为后续直接把服务器作为请求代理)
    • 支持缓存,一天内不对同一个ip和端口进行多次检查请求
  • 代理服务器包含如下一些验证:
    • 是否支持http请求代理
    • 是否支持https请求代理,很多网站都是https网站,就不能用不支持CONNECT的http代理服务器
    • 国家
    • 是否匿名
      • 有无请求源ip的地址
    • 是否高匿名
      • 有无代理相关的header头字段
  • 提供api获取代理列表
    • /list 输出对应的代理属性
  • 本身提供http[s]/socks5代理功能
    • 支持账号验证
  • 支持账号
    • 支持注册
    • 支持简单的页面
    • 支持验证,通过X-Rproxy-Token头进行 curl -H "X-Rproxy-Token: 1234" http://127.0.0.1:8089/api/v1/list | jq
  • 支持过滤器设置,通过X-Rproxy-Filter进行 curl -H "X-Rproxy-Filter: type=socks5" http://127.0.0.1:8089 ip.bmh.im/c
    • 支持转发时删除过滤器
  • 支持设置每次测试的proxy个数,通过X-Rproxy-Limit进行 curl -x https://127.0.0.1:8088/ --proxy-user 'user:pass' --proxy-insecure https://ip.bmh.im -i --proxy-header "X-Rproxy-Limit: 1" -v
    • 支持转发时删除limit设置
  • 支持数据库存储
    • 支持sqlite
  • 支持tls模式https
    • 支持自生成证书,以及加载已经生成的证书
  • 支持并发线程池,控制并发数量

测试

  • http代理服务器
    • 支持http
    • 支持https代理
  • https代理服务器
    • 支持http
    • 支持https代理
  • 支持socks5代理
  • 支持取最快的代理(每次取三条)

案例

启动服务器

./rproxy --tls

添加代理测试

curl 'https://127.0.0.1:8088/api/v1/check?url=https://1.1.1.1' --user 'user:pass' -k
curl 'https://127.0.0.1:8088/api/v1/check?url=http://2.2.2.2:8080' --user 'user:pass' -k
curl 'https://127.0.0.1:8088/api/v1/check?url=socks5://3.3.3.3:1080' --user 'user:pass' -k

测试代理

# 本地代理是http,远端是http
curl -x http://127.0.0.1:8088/ --proxy-user 'user:pass' http://ip.bmh.im -i
# 本地是http,远端是https
curl -x http://127.0.0.1:8088/ --proxy-user 'user:pass' --proxy-insecure https://ip.bmh.im -i
# 本地是https,远端是http
curl -x https://127.0.0.1:8088/ --proxy-user 'user:pass' --proxy-insecure http://ip.bmh.im -i
# 本地是https,远端是https
curl -x https://127.0.0.1:8088/ --proxy-user 'user:pass' --proxy-insecure https://ip.bmh.im -i
# 请求http,后端取一条测试
curl -x https://127.0.0.1:8088/ --proxy-user 'user:pass' --proxy-insecure http://ip.bmh.im -i -H "X-Rproxy-Limit: 1"
# 请求https,后端取一条测试,因为用到了CONNECT,所以要用proxy-header
curl -x https://127.0.0.1:8088/ --proxy-user 'user:pass' --proxy-insecure http://ip.bmh.im -i --proxy-header "X-Rproxy-Limit: 1" -v

指定一个代理服务器测试

curl -x https://127.0.0.1:8088/ --proxy-user 'user:pass' --proxy-insecure http://ip.bmh.im -i --proxy-header "X-Rproxy-Filter: ip=1.1.1.1" -v

循环测试

while true; do curl -x https://127.0.0.1:8088/ --proxy-insecure --proxy-user "user:pass" ip.bmh.im/g; echo ""; done

About

自动化的代理服务器

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /