proxylinker 0.1.1 → 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/lib/proxylinker/proxy_list.rb +54 -0
- data/lib/proxylinker/version.rb +1 -3
- data/proxylinker.gemspec +1 -1
- metadata +4 -4
- data/lib/proxy_list.rb +0 -49
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 314680df64623ac88f6916517e064822f9ecfac9facf8b7c8c3ac45da1bd0fed
|
|
4
|
+
data.tar.gz: 6586e23d1a9bafbdfc87e2f39cd3c00bc5dbd8ae75dcb0c4913bb2bdcec237cf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f248846aac9a26bf11c5598ee0505505cbeefbddfe60187dacdf29f93a4a82625a9e912b76e284249276e13bc472132d8209f8b81e28235e24520d02fe9bde6b
|
|
7
|
+
data.tar.gz: eb6ab78145918be7736da750e923f03c7121d131139e734f355c9940c070aac11e78f5b3d47fa7ad2300c6d23934a2c11bf3e3c3e2e2e2d1b698141ef230c3f2
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'uri'
|
|
3
|
+
require 'ostruct'
|
|
4
|
+
|
|
5
|
+
module Proxylinker
|
|
6
|
+
class ProxyList
|
|
7
|
+
attr_reader :proxies, :timeout
|
|
8
|
+
|
|
9
|
+
# Initialiserer ProxyList med en filsti og timeout-parameter (standard: 5 sek.)
|
|
10
|
+
def initialize(proxy_file_path, timeout: 5)
|
|
11
|
+
@proxy_file_path = proxy_file_path
|
|
12
|
+
@timeout = timeout
|
|
13
|
+
@proxies = load_proxies
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Læs proxies fra en fil (forventet format: IP:PORT per linje)
|
|
17
|
+
def load_proxies
|
|
18
|
+
proxies = []
|
|
19
|
+
File.readlines(@proxy_file_path).each do |line|
|
|
20
|
+
addr, port = line.strip.split(':')
|
|
21
|
+
proxies << OpenStruct.new(addr: addr, port: port)
|
|
22
|
+
end
|
|
23
|
+
proxies
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Hent en tilfældig proxy uden at validere
|
|
27
|
+
def get_random_proxy
|
|
28
|
+
@proxies.sample
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Metode til at udføre en HTTP-get-anmodning med eller uden proxy
|
|
32
|
+
def fetch_with_proxy(uri_str)
|
|
33
|
+
uri = URI.parse(uri_str)
|
|
34
|
+
proxy = get_random_proxy
|
|
35
|
+
|
|
36
|
+
begin
|
|
37
|
+
http = Net::HTTP.new(uri.host, uri.port, proxy.addr, proxy.port)
|
|
38
|
+
http.open_timeout = @timeout
|
|
39
|
+
http.read_timeout = @timeout
|
|
40
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
|
41
|
+
response = http.request(request)
|
|
42
|
+
return response.body
|
|
43
|
+
rescue
|
|
44
|
+
# Hvis der opstår en fejl med proxyen, prøv uden proxy
|
|
45
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
46
|
+
http.open_timeout = @timeout
|
|
47
|
+
http.read_timeout = @timeout
|
|
48
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
|
49
|
+
response = http.request(request)
|
|
50
|
+
return response.body
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
data/lib/proxylinker/version.rb
CHANGED
data/proxylinker.gemspec
CHANGED
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.description = "ProxyLinker allows you to load, validate, and use proxies from a list."
|
|
13
13
|
spec.license = "MIT"
|
|
14
14
|
spec.required_ruby_version = ">= 3.0.0"
|
|
15
|
-
|
|
15
|
+
spec.homepage = "https://github.com/Max-lindberg/Proxylinker-gem"
|
|
16
16
|
# Specify which files should be added to the gem when it is released.
|
|
17
17
|
spec.files = Dir.glob("lib/**/*.rb") + ["proxylinker.gemspec", "README.md", "LICENSE.txt"]
|
|
18
18
|
spec.require_paths = ["lib"]
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: proxylinker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Max Lindberg
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-10-
|
|
11
|
+
date: 2024-10-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: ProxyLinker allows you to load, validate, and use proxies from a list.
|
|
14
14
|
email:
|
|
@@ -19,11 +19,11 @@ extra_rdoc_files: []
|
|
|
19
19
|
files:
|
|
20
20
|
- LICENSE.txt
|
|
21
21
|
- README.md
|
|
22
|
-
- lib/proxy_list.rb
|
|
23
22
|
- lib/proxylinker.rb
|
|
23
|
+
- lib/proxylinker/proxy_list.rb
|
|
24
24
|
- lib/proxylinker/version.rb
|
|
25
25
|
- proxylinker.gemspec
|
|
26
|
-
homepage:
|
|
26
|
+
homepage: https://github.com/Max-lindberg/Proxylinker-gem
|
|
27
27
|
licenses:
|
|
28
28
|
- MIT
|
|
29
29
|
metadata: {}
|
data/lib/proxy_list.rb
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
require 'net/http'
|
|
2
|
-
require 'uri'
|
|
3
|
-
require 'ostruct'
|
|
4
|
-
|
|
5
|
-
module Proxylinker
|
|
6
|
-
class ProxyList
|
|
7
|
-
attr_reader :proxies, :timeout
|
|
8
|
-
|
|
9
|
-
# Initialiserer ProxyList med en filsti og timeout-parameter (standard: 5 sek.)
|
|
10
|
-
def initialize(proxy_file_path, timeout: 5)
|
|
11
|
-
@proxy_file_path = proxy_file_path
|
|
12
|
-
@timeout = timeout
|
|
13
|
-
@proxies = load_proxies
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Læs proxies fra en fil (forventet format: IP:PORT per linje)
|
|
17
|
-
def load_proxies
|
|
18
|
-
proxies = []
|
|
19
|
-
File.readlines(@proxy_file_path).each do |line|
|
|
20
|
-
addr, port = line.strip.split(':')
|
|
21
|
-
proxies << OpenStruct.new(addr: addr, port: port)
|
|
22
|
-
end
|
|
23
|
-
proxies
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Validér en proxy ved at forsøge at oprette forbindelse til en kendt URL
|
|
27
|
-
def validate_proxy(proxy)
|
|
28
|
-
uri = URI.parse('https://google.com')
|
|
29
|
-
http = Net::HTTP.new(uri.host, uri.port, proxy.addr, proxy.port)
|
|
30
|
-
http.open_timeout = @timeout
|
|
31
|
-
http.read_timeout = @timeout
|
|
32
|
-
|
|
33
|
-
begin
|
|
34
|
-
response = http.get(uri.path)
|
|
35
|
-
return response.is_a?(Net::HTTPSuccess)
|
|
36
|
-
rescue
|
|
37
|
-
false
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Hent en tilfældig fungerende proxy
|
|
42
|
-
def get_random_proxy
|
|
43
|
-
@proxies.shuffle.each do |proxy|
|
|
44
|
-
return proxy if validate_proxy(proxy)
|
|
45
|
-
end
|
|
46
|
-
nil
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|