https://github.com/plusor/rest-tor
rest-tor
是一个基于 tor 的代理服务
它可以无限制的变更 IP 去请求目标服务器
目前只是测试版本,等有时间再优化
rest-tor
依赖于第三方 gem
有
Tor.request
Tor.request
类似于 RestClient::Request.execute
, 接受的参数有:
method
| 默认 get
url
payload
header
或 headers
(默认的 User-Agent
会使用常量 Tor::USER_AGENT)mobile
| 默认为 false
, 如果为 true
, 则使用移动端的 User-Agent
proxy
默认使用 tor 代理,如果为 false
则不使用代理。可以自定义代理如:proxy: 'http://127.0.0.1:8888'
raw
默认为 true
, 结果等同于 Nokogiri::HTML(req.body)
, 如果为 false, 则返回 req.body
format
| html
, json
, string
如果没有指定format
则根据 raw
的值 true
: html
, false
: string
. 处理结果为对应的格式mode
| 默认为 :default
, 根据每个 tor
实例请求成功 (RestClient 请求没报错的情况下) 的数量排序,选择成功数最高的那个实例。可选 :order
, 根据端口号进行排序。可以自定义mode
Tor::Dispatcher.register :custom do
Tor.store.all.sort_by do |(port, tor)|
tor.c_success
end
end
Tor.request(url: '...', mode: :custom)
在调用Tor.request
时,会占用 tor 实例,如果是多线程并发执行,且没有多余的 tor 实例可用,系统则会自动初始化一个新的实例。
Tor.init
会自动初始化 10
个 tor 实例
.
Tor.stop(port)
关闭 tor
Tor.clear
关闭所有 tor
Tor.store.all
查看所有 tor
当 tor 实例失败次数到一定数量后,会自动重启 tor 实例,https://github.com/plusor/rest-tor/blob/master/lib/rest_tor/strategy/restart.rb
最后欢迎拍砖和贡献代码