-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #36 from nbulaj/add-providers
Add new providers
- Loading branch information
Showing
8 changed files
with
118 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# frozen_string_literal: true | ||
|
||
require "json" | ||
|
||
module ProxyFetcher | ||
module Providers | ||
# GatherProxy provider class. | ||
class MTPro < Base | ||
# Provider URL to fetch proxy list | ||
def provider_url | ||
"https://mtpro.xyz/api/?type=socks" | ||
end | ||
|
||
def load_proxy_list(filters = {}) | ||
html = load_html(provider_url, filters) | ||
JSON.parse(html) | ||
rescue JSON::ParserError | ||
[] | ||
end | ||
|
||
# Converts HTML node (entry of N tags) to <code>ProxyFetcher::Proxy</code> | ||
# object. | ||
# | ||
# @param node [Object] | ||
# HTML node from the <code>ProxyFetcher::Document</code> DOM model. | ||
# | ||
# @return [ProxyFetcher::Proxy] | ||
# Proxy object | ||
# | ||
def to_proxy(node) | ||
ProxyFetcher::Proxy.new.tap do |proxy| | ||
proxy.addr = node["ip"] | ||
proxy.port = Integer(node["port"]) | ||
proxy.country = node["country"] | ||
proxy.anonymity = "Unknown" | ||
proxy.type = ProxyFetcher::Proxy::SOCKS5 | ||
end | ||
end | ||
end | ||
|
||
ProxyFetcher::Configuration.register_provider(:mtpro, MTPro) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# frozen_string_literal: true | ||
|
||
module ProxyFetcher | ||
module Providers | ||
# FreeProxyList provider class. | ||
class Proxypedia < Base | ||
# Provider URL to fetch proxy list | ||
def provider_url | ||
"https://proxypedia.org" | ||
end | ||
|
||
# [NOTE] Doesn't support filtering | ||
def xpath | ||
"//main/ul/li[position()>1]" | ||
end | ||
|
||
# Converts HTML node (entry of N tags) to <code>ProxyFetcher::Proxy</code> | ||
# object.] | ||
# | ||
# @param html_node [Object] | ||
# HTML node from the <code>ProxyFetcher::Document</code> DOM model. | ||
# | ||
# @return [ProxyFetcher::Proxy] | ||
# Proxy object | ||
# | ||
def to_proxy(html_node) | ||
addr, port = html_node.content_at("a").to_s.split(":") | ||
|
||
ProxyFetcher::Proxy.new.tap do |proxy| | ||
proxy.addr = addr | ||
proxy.port = Integer(port) | ||
proxy.country = parse_country(html_node) | ||
proxy.anonymity = "Unknown" | ||
proxy.type = ProxyFetcher::Proxy::HTTP | ||
end | ||
end | ||
|
||
private | ||
|
||
def parse_country(html_node) | ||
text = html_node.content.to_s | ||
text[/\((.+?)\)/, 1] || "Unknown" | ||
end | ||
end | ||
|
||
ProxyFetcher::Configuration.register_provider(:proxypedia, Proxypedia) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# frozen_string_literal: true | ||
|
||
require "spec_helper" | ||
|
||
describe ProxyFetcher::Providers::MTPro do | ||
before :all do | ||
ProxyFetcher.config.provider = :mtpro | ||
end | ||
|
||
it_behaves_like "a manager" | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# frozen_string_literal: true | ||
|
||
require "spec_helper" | ||
|
||
describe ProxyFetcher::Providers::Proxypedia do | ||
before :all do | ||
ProxyFetcher.config.provider = :proxypedia | ||
end | ||
|
||
it_behaves_like "a manager" | ||
end |