Sha256: b1dd050a21120a2b2a362569276977388e646ee396b6156367c09e01c6909ca1

Contents?: true

Size: 1.97 KB

Versions: 2

Compression:

Stored size: 1.97 KB

Contents

module ProxiesScanner
  class Proxies

    ALL_AREAS = [
      'us', 'fr', 'gb', 'au', 'ca', 'it', 'es', 'hu', 'ng', 'ch', 'se', 'br', 'id',
      'cn', 'fi', 'be', 'co', 'hr', 'ge', 'gr', 'ie', 'mx', 'mt', 'nl', 'pa', 'ph',
      'ro', 'sc', 'tw', 'tn', 'tr', 'ua', 've'
    ]

    def self.find_by_area(area, page=0)
      $logger.info "Proxies.extract area=#{area}, page=#{page}"
      proxies = []

      doc = Nokogiri::HTML(open("http://www.proxylists.net/#{area.downcase}_#{page}.html"))
      table = doc.search('table')[1]

      table.css('tr').each do |tr|
        td1 = tr.css('td')[0]
        td2 = tr.css('td')[1]

        unless td1.nil?
          # extract host
          js = td1.text.scan(/cape\('(.*)'\)\);/)[0]
          unless js.nil?
            js1 = js[0]
            js2 = URI.decode(js1) # self.document.writeln(\"81.199.34.100\");
            $logger.debug "Proxies.extract js2: #{js2}"
            ip = js2.to_s.scan(/ln\("(.*)"\);/)[0][0].to_s
            $logger.debug "Proxies.extract ip: #{ip}"
          end

          # extract port
          unless td2.nil?
            port = td2.text.strip.to_s.to_i || 8080
          end

          proxies << Proxy.new(ip, port, area) unless ip.nil?
        end
      end
      return proxies
    end

    def self.from_file(filename)
      proxies = []
      file = nil
      begin
        file = File.open(filename, 'r+')
        file.each_line do |line|
          next if line[0] == '#'
          s_ip = line.split(':')[0]
          s_port = line.split(':')[1]
          s_area = line.split(':')[2] || '--'
          $logger.debug "From file extract s_ip: #{s_ip}"
          $logger.debug "From file extract s_port: #{s_port}"
          $logger.debug "From file extract s_area: #{s_area}"
          proxies << Proxy.new(s_ip.strip, s_port.strip.to_i, s_area.strip)
        end
      rescue Exception => e
        $logger.error "From file error: #{e.message}"
      end
      file.close unless file.nil?
      return proxies
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
proxies-scanner-0.0.2 lib/proxies-scanner/proxies.rb
proxies-scanner-0.0.1 lib/proxies-scanner/proxies.rb