如果嫌麻烦可以加机器人上车或者添加微信公众号“自僱落葉竟痴迷”点击下方JD机器人
添加上车
前提准备
一个代理代理 api 地址(携趣或者巨量等都可以)
主机已安装docker
创建auto-proxy-pool容器
先在root(也可以其他目录下)创建一个auto-proxy-pool文件夹并进入该目录下
mkdir auto-proxy-pool && cd auto-proxy-pool
在该目录创建auto-proxy-pool容器
docker run -dit \
--name auto-proxy-pool \
--network bridge \
--restart always \
-p 4444:8080 \
-v "$(pwd)":/run/data \
--privileged=true \
mzzsfy/auto-proxy-pool:latest
其中4444
是对外开放的端口,你也可以修改为其他端口
如果你在云服务器搭建的,应该先在云服务器的安全组中放行该端口
获取代理api
这里以携趣为例
获取api前先将云服务器的ip添加到携趣的白名单中
添加后到 IP提取API
进行提取
格式按照代码注释的 提取数量 1 换行符 /n http 代理协议
配置proxy 配置文件
修改 proxy 配置文件
只使用携趣的话,可以是使用下面的单代理模板
########################################
# 配置中带有default前缀的都能被覆盖 #
########################################
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#注意:"空格#"为注释,所有要启用的功能只需要删除'#'号,不要随意删除空格!
#提取代理失败后策略: DIRECT(直连) REJECT(拒绝) PROXY#http://ip:port(固定代理)
#defaultFailBack: DIRECT
config:
enableHttpIndexHtml: false #是否启用http首页自动跳转到html,关闭后首页与/help/proxy功能一致
# logIpDesensitization: true #日志ip脱敏
# dataCopyMode: 1 #可选e: 1,2 底层实现不一样
# 精细化日志等级,详细程度 trace>debug>info>warne>error>fatal
log:
pool: info #代理池,主要日志
pool.proxy.data: warn #传输日志,一般不要开太低
# root: info #全局日志控制,一般不用改
# pool.proxy.peek: trace #选取上游日志
# pool.proxy: debug #代理池,代理日志
# connect.peek: debug #收到请求,并发日志
# connect.over: debug #请求处理完成
# pool.pool.pull: warn #代理池,拉取代理日志
#设置本代理池的密码
#users:
# username: password
#核心配置
changeRequest:
# 支持多项,从上到下匹配
# 匹配host的正则
- hostRegex: (.+\.jd\.com)|(.+\.isvjd\.com)|(.+\.isvjcloud\.com)
#使用哪一个代理,这样写会尝试按顺序从proxy1取2次,然后去proxy2取一次,按最先取到有效计算
proxy: xiequ
loadBalanceInterval: 10 #每正常10个请求更换一次proxy
#是否放行,true直接屏蔽该请求
black: false
#拒绝指定host
- hostRegex: .+\.gov
black: true
upstream:
xiequ:
#请求url,只能为get请求,要求返回为文本格式,每行一个ip:port,建议每次返回maxSize一半的数量
apiUrl: `这里填API地址`
#获取到的上游多久后失效,兼容格式 30s,20s100ms,0或者负数不自动生效,建议30秒过期设置25秒,1分钟过期设置55秒
lifecycle: 25
#代理使用一段时间后,在当前代理不过期的情况下主动去获取新的代理,合理设置请求更顺畅
proactive: 20s
#请求api最低间隔,防止被封
requestInterval: 2000ms
#多上游时,每个上游的消耗权重,默认1,越大使用越少
#loadBalanceMultiple: 2
#优先级分组,默认0,组内部全fail状态才尝试下一组,提取代理时从小到大依次尝试,多上游可用
#groupIndex: 1
#提取失败后,多久内标记为不可用,格式 1h30m1s,2h,30m,10s 默认: 10m
#failSleep: 2h
#连续提取失败几次后标记为不可用,默认: 3
#failThreshold: 3
#保留几个上游,也就是代理池保留的坑位
maxSize: 2
如果想要获取多个代理商的代理ip,那么可以参照下面的方式修改
########################################
# 配置中带有default前缀的都能被覆盖 #
########################################
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#注意:"空格#"为注释,所有要启用的功能只需要删除'#'号,不要随意删除空格!
#提取代理失败后策略: DIRECT(直连) REJECT(拒绝) PROXY#http://ip:port(固定代理)
#defaultFailBack: DIRECT
config:
enableHttpIndexHtml: false #是否启用http首页自动跳转到html,关闭后首页与/help/proxy功能一致
# logIpDesensitization: true #日志ip脱敏
# dataCopyMode: 1 #可选e: 1,2 底层实现不一样
# 精细化日志等级,详细程度 trace>debug>info>warne>error>fatal
log:
pool: info #代理池,主要日志
pool.proxy.data: warn #传输日志,一般不要开太低
# root: info #全局日志控制,一般不用改
# pool.proxy.peek: trace #选取上游日志
# pool.proxy: debug #代理池,代理日志
# connect.peek: debug #收到请求,并发日志
# connect.over: debug #请求处理完成
# pool.pool.pull: warn #代理池,拉取代理日志
#设置本代理池的密码
#users:
# username: password
#核心配置
changeRequest:
# 支持多项,从上到下匹配
# 匹配host的正则
- hostRegex: (.+\.jd\.com)|(.+\.isvjd\.com)|(.+\.isvjcloud\.com)
#使用哪一个代理,这样写会尝试按顺序从proxy1取2次,然后去proxy2取一次,按最先取到有效计算
proxy: xiequ,juliang
loadBalanceInterval: 10 #每正常10个请求更换一次proxy
#是否放行,true直接屏蔽该请求
black: false
#拒绝指定host
- hostRegex: .+\.gov
black: true
upstream:
xiequ:
#请求url,只能为get请求,要求返回为文本格式,每行一个ip:port,建议每次返回maxSize一半的数量
apiUrl: `这里填API地址`
#获取到的上游多久后失效,兼容格式 30s,20s100ms,0或者负数不自动生效,建议30秒过期设置25秒,1分钟过期设置55秒
lifecycle: 25
#代理使用一段时间后,在当前代理不过期的情况下主动去获取新的代理,合理设置请求更顺畅
proactive: 20s
#请求api最低间隔,防止被封
requestInterval: 2000ms
#多上游时,每个上游的消耗权重,默认1,越大使用越少
#loadBalanceMultiple: 2
#优先级分组,默认0,组内部全fail状态才尝试下一组,提取代理时从小到大依次尝试,多上游可用
#groupIndex: 1
#提取失败后,多久内标记为不可用,格式 1h30m1s,2h,30m,10s 默认: 10m
#failSleep: 2h
#连续提取失败几次后标记为不可用,默认: 3
#failThreshold: 3
#保留几个上游,也就是代理池保留的坑位
maxSize: 2
juliang:
apiUrl: `这里填API地址`
#获取到的上游多久后失效,兼容格式 30s,20s100ms,0或者负数不自动生效,建议30秒过期设置25秒,1分钟过期设置55秒
lifecycle: 25
#代理使用一段时间后,在当前代理不过期的情况下主动去获取新的代理,合理设置请求更顺畅
proactive: 20s
#请求api最低间隔,防止被封
requestInterval: 2000ms
#多上游时,每个上游的消耗权重,默认1,越大使用越少
#loadBalanceMultiple: 2
#优先级分组,默认0,组内部全fail状态才尝试下一组,提取代理时从小到大依次尝试,多上游可用
#groupIndex: 1
#提取失败后,多久内标记为不可用,格式 1h30m1s,2h,30m,10s 默认: 10m
#failSleep: 2h
#连续提取失败几次后标记为不可用,默认: 3
#failThreshold: 3
#保留几个上游,也就是代理池保留的坑位
maxSize: 2
配置 proxy.yml
的 apiUrl
,将提取的 api 链接填入即可
admin.password
文件也建议修改一下
重启auto-proxy-pool容器
docker restart auto-proxy-pool
验证
后台地址: http://IP:端口/admin
状态地址: http://IP:端口/admin/status
账号密码即为
admin.password
文件中的内容
如果访问不了可以查看一下容器日志(前提是你端口已经放开)
docker logs -f --tail 500 auto-proxy-pool
使用
由于我只是希望JD脚本使用所以不进行全局代理(全局代理请看最后)
如果你使用的是6dy 或者fake等JD脚本库,那么可以根据这些脚本的运行日志中查看如何使特定的脚本使用代理
这时只需要在青龙面板的环境面板中配置环境变量即可,值为
如果配置全局代理,需要在青龙面板->配置文件中的ProxyUrl
后填上http://IP:端口
或者添加
//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY="http://ip:port"
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY="http://ip:port"