proxy_fetcher 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +32 -26
- data/lib/proxy_fetcher/configuration.rb +1 -1
- data/lib/proxy_fetcher/version.rb +1 -1
- data/proxy_fetcher.gemspec +1 -1
- data/spec/proxy_fetcher/providers/hide_my_name_spec.rb +2 -1
- data/spec/proxy_fetcher/proxy_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40029164cd3a21183e8f22191e2cd8c01ba05ae3
|
4
|
+
data.tar.gz: ff557370ec0e68c0817fb009f9e483f936eaecd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a1461d4c42c3478675a4ad20e0d5e41a674d3486fe1026fdf4d95a1e484c4048f8f01476aaac14ccfa0c2a9e4e78ad2049e6b284828eeeb7c6670b1d0923630
|
7
|
+
data.tar.gz: 98f74fc50f15dc7f21f0f308494e4e874ad184cad512b401173da7ecc648c4fd0672aca45f2f3a4f0ec55aa6c01850d7979b579b8609a013d11c37a59443c10b
|
data/README.md
CHANGED
@@ -57,17 +57,20 @@ gem install proxy_fetcher -v '0.4'
|
|
57
57
|
|
58
58
|
### In Ruby application
|
59
59
|
|
60
|
-
|
60
|
+
By default ProxyFetcher uses all the available proxy providers. To get current proxy list without validation you
|
61
|
+
need to initialize an instance of `ProxyFetcher::Manager` class. During this process ProxyFetcher will automatically load
|
62
|
+
and parse all the proxies:
|
61
63
|
|
62
64
|
```ruby
|
63
65
|
manager = ProxyFetcher::Manager.new # will immediately load proxy list from the server
|
64
66
|
manager.proxies
|
65
67
|
|
66
|
-
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
68
|
+
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
67
69
|
# @response_time=5217, @type="HTTP", @anonymity="High">, ... ]
|
68
70
|
```
|
69
71
|
|
70
|
-
You can initialize proxy manager without immediate load of proxy list from the remote server by passing
|
72
|
+
You can initialize proxy manager without immediate load of the proxy list from the remote server by passing
|
73
|
+
`refresh: false` on initialization:
|
71
74
|
|
72
75
|
```ruby
|
73
76
|
manager = ProxyFetcher::Manager.new(refresh: false) # just initialize class instance
|
@@ -76,18 +79,27 @@ manager.proxies
|
|
76
79
|
#=> []
|
77
80
|
```
|
78
81
|
|
79
|
-
|
82
|
+
`ProxyFetcher::Manager` class is very helpful when you need to manipulate and manager proxies. To get the proxy
|
83
|
+
from the list yoy can call `.get` or `.pop` method that will return first proxy and move it to the end of the list.
|
84
|
+
This methods has some equivalents like `get!` or aliased `pop!` that will return first **connectable** proxy and
|
85
|
+
move it to the end of the list. They both marked as danger methods because all dead proxies will be removed from the list.
|
86
|
+
|
87
|
+
If you need just some random proxy then call `manager.random_proxy` or it's alias `manager.random`.
|
88
|
+
|
89
|
+
To clean current proxy list from the dead entries that does not respond to the requests you you need to use `cleanup!`
|
90
|
+
or `validate!` method:
|
80
91
|
|
81
92
|
```ruby
|
82
93
|
manager.cleanup! # or manager.validate!
|
83
94
|
```
|
84
95
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
96
|
+
This action will enumerate proxy list and remove all the entries that doesn't respond by timeout or returns errors.
|
97
|
+
|
98
|
+
In order to increase the performance proxy list validation is performed using Ruby threads. By default gem creates a
|
99
|
+
pool with 10 threads, but you can increase this number by changing `pool_size` configuration option: `ProxyFetcher.config.pool_size = 50`.
|
100
|
+
Read more in [Proxy validation speed](#proxy-validation-speed) section.
|
89
101
|
|
90
|
-
|
102
|
+
If you need raw proxy URLs (like `host:port`) then you can use `raw_proxies` methods that will return array of strings:
|
91
103
|
|
92
104
|
```ruby
|
93
105
|
manager = ProxyFetcher::Manager.new
|
@@ -97,22 +109,16 @@ manager.raw_proxies
|
|
97
109
|
# "91.217.42.2:8080", "97.77.104.22:80", "165.234.102.177:8080", ...]
|
98
110
|
```
|
99
111
|
|
100
|
-
|
112
|
+
You don't need to initialize a new manager every time you want to load actual proxy list from the providers. All you
|
113
|
+
need is to refresh the proxy list by calling `#refresh_list!` (or `#fetch!`) method for your `ProxyFetcher::Manager` instance:
|
101
114
|
|
102
115
|
```ruby
|
103
116
|
manager.refresh_list! # or manager.fetch!
|
104
117
|
|
105
|
-
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
118
|
+
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
106
119
|
# @response_time=5217, @type="HTTP", @anonymity="High">, ... ]
|
107
120
|
```
|
108
121
|
|
109
|
-
You can use two methods to get the first proxy from the list:
|
110
|
-
|
111
|
-
* `get` or aliased `pop` (will return first proxy and move it to the end of the list)
|
112
|
-
* `get!` or aliased `pop!` (will return first **connectable** proxy and move it to the end of the list; all the proxies till the working one will be removed)
|
113
|
-
|
114
|
-
Or you can get just random proxy by calling `manager.random_proxy` or it's alias `manager.random`.
|
115
|
-
|
116
122
|
If you need to filter proxy list, for example, by country or response time and selected provider supports filtering with GET params,
|
117
123
|
then you can just pass your filters like a simple Ruby hash to the Manager instance:
|
118
124
|
|
@@ -139,7 +145,7 @@ manager = ProxyFetcher::Manager.new(filters: {
|
|
139
145
|
type: 'All_http'
|
140
146
|
}
|
141
147
|
})
|
142
|
-
|
148
|
+
|
143
149
|
manager.proxies
|
144
150
|
|
145
151
|
# => [...]
|
@@ -149,7 +155,7 @@ You can apply different filters every time you calling `#refresh_list!` (or `#fe
|
|
149
155
|
|
150
156
|
```ruby
|
151
157
|
manager.refresh_list!(country: 'PL', maxtime: '500')
|
152
|
-
|
158
|
+
|
153
159
|
# => [...]
|
154
160
|
```
|
155
161
|
|
@@ -190,7 +196,7 @@ proxy_fetcher --help
|
|
190
196
|
|
191
197
|
## Configuration
|
192
198
|
|
193
|
-
To change open/read timeout for `cleanup!` and `connectable?` methods you need to change ProxyFetcher.config
|
199
|
+
To change open/read timeout for `cleanup!` and `connectable?` methods you need to change `ProxyFetcher.config`:
|
194
200
|
|
195
201
|
```ruby
|
196
202
|
ProxyFetcher.configure do |config|
|
@@ -219,7 +225,7 @@ ProxyFetcher.config.http_client = MyHTTPClient
|
|
219
225
|
manager = ProxyFetcher::Manager.new
|
220
226
|
manager.proxies
|
221
227
|
|
222
|
-
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
228
|
+
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
223
229
|
# @response_time=5217, @type="HTTP", @anonymity="High">, ... ]
|
224
230
|
```
|
225
231
|
|
@@ -240,11 +246,11 @@ ProxyFetcher.config.proxy_validator = MyProxyValidator
|
|
240
246
|
manager = ProxyFetcher::Manager.new
|
241
247
|
manager.proxies
|
242
248
|
|
243
|
-
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
249
|
+
#=> [#<ProxyFetcher::Proxy:0x00000002879680 @addr="97.77.104.22", @port=3128, @country="USA",
|
244
250
|
# @response_time=5217, @type="HTTP", @anonymity="High">, ... ]
|
245
|
-
|
251
|
+
|
246
252
|
manager.validate!
|
247
|
-
|
253
|
+
|
248
254
|
#=> [ ... ]
|
249
255
|
```
|
250
256
|
|
@@ -294,7 +300,7 @@ Also you can call next instance methods for every Proxy object:
|
|
294
300
|
|
295
301
|
Currently ProxyFetcher can deal with next proxy providers (services):
|
296
302
|
|
297
|
-
* Hide My Name (
|
303
|
+
* Hide My Name (**currently does not work**)
|
298
304
|
* Free Proxy List
|
299
305
|
* Free SSL Proxies
|
300
306
|
* Proxy Docker
|
data/proxy_fetcher.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'proxy_fetcher/version'
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = 'proxy_fetcher'
|
7
7
|
gem.version = ProxyFetcher.gem_version
|
8
|
-
gem.date = '2017-
|
8
|
+
gem.date = '2017-09-04'
|
9
9
|
gem.summary = 'Ruby gem for dealing with proxy lists from different providers'
|
10
10
|
gem.description = 'This gem can help your Ruby application to make HTTP(S) requests ' \
|
11
11
|
'from proxy server by fetching and validating proxy lists from the different providers.'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proxy_fetcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Bulai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|