proxied 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +20 -3
- data/lib/proxied/checker.rb +7 -5
- data/lib/proxied/configuration.rb +1 -1
- data/lib/proxied/jobs/check_proxies_job.rb +2 -2
- data/lib/proxied/version.rb +1 -1
- data/lib/tasks/tasks.rake +4 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3225511d5ca688c62c4c41138f7dfa135b766a1ca22de15f638c76a4bc805e6
|
4
|
+
data.tar.gz: ddaa33c4df250b5b868eb98262b0c87dc3c0ad099fd9343989f77c18e16a8d74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 107c196e83c9a87d27674c89cb6f6384b5c69a689e3c2c0d818f0241bddec129180bbc39e0e16599abc15e1eb10e76e308e5aa038c13478fd2e74b5ba57b435d
|
7
|
+
data.tar.gz: 9d5d1cfed81dad98ec888d571e2e1cfcac30cc8e0d6898e60c4edad01538eada8936621363c016b6e0c75998d714771cd8e3bcd6a864794f332c1659a025063f
|
data/README.md
CHANGED
@@ -32,10 +32,27 @@ Generate the migration and model:
|
|
32
32
|
|
33
33
|
$ rails generate proxied MODEL
|
34
34
|
|
35
|
+
## Features
|
36
|
+
|
37
|
+
Features:
|
38
|
+
|
39
|
+
* ActiveRecord model and migration or Mongoid model for managing your proxy data.
|
40
|
+
|
41
|
+
* Common model methods for selecting random proxies (based on protocol, etc.) for both ActiveRecord and Mongoid.
|
42
|
+
|
43
|
+
* A proxy checker to check the status for HTTP(S) and Socks proxies (with configurable test setups).
|
44
|
+
|
45
|
+
* An importer that will bulk import proxies for you.
|
46
|
+
|
47
|
+
* Sidekiq jobs to asynchronously check proxies.
|
35
48
|
|
36
49
|
## Usage
|
37
50
|
|
38
|
-
|
51
|
+
1. Set up the gem according to the installation instructions.
|
52
|
+
2. Import proxies.
|
53
|
+
3. Schedule the rake task (proxied:check_proxies) using cron or schedule the Sidekiq job (Proxied::Jobs::CheckProxiesJob) using a scheduler for Sidekiq.
|
54
|
+
4. Use the model methods to query for valid proxies (the maximum failed attempts etc. are configurable using the global Proxied.configure-method).
|
55
|
+
5. Use the proxies/proxy from the resulting query to perform HTTP(S) or SOCKS requests using the proxy. Some helper methods, e.g. #proxy_options_for_faraday are included to help with integration with some common gems.
|
39
56
|
|
40
57
|
## Development
|
41
58
|
|
@@ -54,7 +71,7 @@ In order to test specific specs: ADAPTER=mongoid bundle exec appraisal mongoid7
|
|
54
71
|
|
55
72
|
## Contributing
|
56
73
|
|
57
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
74
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/SebastianJ/proxied. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
58
75
|
|
59
76
|
## License
|
60
77
|
|
@@ -62,4 +79,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
62
79
|
|
63
80
|
## Code of Conduct
|
64
81
|
|
65
|
-
Everyone interacting in the Proxied project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
82
|
+
Everyone interacting in the Proxied project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/SebastianJ/proxied/blob/master/CODE_OF_CONDUCT.md).
|
data/lib/proxied/checker.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
module Proxied
|
2
2
|
class Checker
|
3
|
+
attr_accessor :mode
|
3
4
|
attr_accessor :minimum_successful_attempts, :maximum_failed_attempts
|
4
5
|
attr_accessor :limit
|
5
6
|
|
6
|
-
def initialize(minimum_successful_attempts: ::Proxied.configuration.minimum_successful_attempts, maximum_failed_attempts: ::Proxied.configuration.maximum_failed_attempts, limit: nil)
|
7
|
+
def initialize(mode: :synchronous, minimum_successful_attempts: ::Proxied.configuration.minimum_successful_attempts, maximum_failed_attempts: ::Proxied.configuration.maximum_failed_attempts, limit: nil)
|
8
|
+
self.mode = mode
|
7
9
|
self.minimum_successful_attempts = minimum_successful_attempts
|
8
10
|
self.maximum_failed_attempts = maximum_failed_attempts
|
9
11
|
self.limit = limit
|
10
12
|
end
|
11
13
|
|
12
|
-
def check_proxies(protocol: :all, proxy_type: :all,
|
14
|
+
def check_proxies(protocol: :all, proxy_type: :all, update: true)
|
13
15
|
proxies = ::Proxied.configuration.proxy_class.constantize.should_be_checked(
|
14
16
|
protocol: protocol,
|
15
17
|
proxy_type: proxy_type,
|
@@ -22,10 +24,10 @@ module Proxied
|
|
22
24
|
::Proxied::Logger.log "Found #{proxies.size} #{proxy_type} proxies to check."
|
23
25
|
|
24
26
|
proxies.each do |proxy|
|
25
|
-
case mode
|
27
|
+
case self.mode.to_sym
|
26
28
|
when :synchronous
|
27
29
|
check_proxy(proxy, update: update)
|
28
|
-
when :
|
30
|
+
when :asynchronous
|
29
31
|
::Proxied::Jobs::CheckProxyJob.perform_async(proxy.id.to_s)
|
30
32
|
end
|
31
33
|
end
|
@@ -66,7 +68,7 @@ module Proxied
|
|
66
68
|
end
|
67
69
|
|
68
70
|
def check_http_proxy(proxy, test_url: ::Proxied.configuration.http_test[:url], timeout: ::Proxied.configuration.http_test[:timeout], update: true)
|
69
|
-
::Proxied::Logger.log "#{Time.now}: Fetching robots.txt for Google.com with proxy #{proxy.proxy_address}.
|
71
|
+
::Proxied::Logger.log "#{Time.now}: Fetching robots.txt for Google.com with proxy #{proxy.proxy_address}."
|
70
72
|
|
71
73
|
response = request(test_url, proxy, options: {timeout: timeout})
|
72
74
|
valid_proxy = (response && !(response =~ /Allow: \/search\/about/i).nil?)
|
@@ -16,7 +16,7 @@ module Proxied
|
|
16
16
|
self.faraday = {
|
17
17
|
adapter: :net_http,
|
18
18
|
user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Safari/605.1.15",
|
19
|
-
verbose:
|
19
|
+
verbose: false
|
20
20
|
}
|
21
21
|
|
22
22
|
self.http_test = {
|
@@ -4,8 +4,8 @@ module Proxied
|
|
4
4
|
include ::Sidekiq::Worker
|
5
5
|
sidekiq_options queue: ::Proxied.configuration.job_queue
|
6
6
|
|
7
|
-
def perform(protocol = :all, proxy_type = :all, mode = :
|
8
|
-
::Proxied::Checker.new.check_proxies(protocol: protocol.to_sym, proxy_type: proxy_type.to_sym,
|
7
|
+
def perform(protocol = :all, proxy_type = :all, mode = :asynchronous)
|
8
|
+
::Proxied::Checker.new(mode: mode.to_sym).check_proxies(protocol: protocol.to_sym, proxy_type: proxy_type.to_sym, update: true)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/proxied/version.rb
CHANGED
data/lib/tasks/tasks.rake
CHANGED
@@ -2,12 +2,11 @@ namespace :proxied do
|
|
2
2
|
task :check_proxies, [:protocol, :proxy_type, :mode, :maximum_failed_attempts] => :environment do |task, args|
|
3
3
|
args.with_defaults(protocol: :http, proxy_type: :public, mode: :synchronous, maximum_failed_attempts: 10)
|
4
4
|
|
5
|
-
checker = ::Proxied::Checker.new
|
5
|
+
checker = ::Proxied::Checker.new(mode: args.mode.to_sym, maximum_failed_attempts: args.maximum_failed_attempts.to_i)
|
6
6
|
checker.check_proxies(
|
7
|
-
protocol:
|
8
|
-
proxy_type:
|
9
|
-
|
10
|
-
maximum_failed_attempts: args.maximum_failed_attempts.to_i
|
7
|
+
protocol: args.protocol.to_sym,
|
8
|
+
proxy_type: args.proxy_type.to_sym,
|
9
|
+
|
11
10
|
)
|
12
11
|
end
|
13
12
|
end
|