Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

🟣 Tuto : Ruby - mechanize utiliser google pour trouver des proxy


#1 2013-07-11 21:08:10

Mention conquering_lion
🥉 Grade : Scout

Auxiliaire
Inscription : 2013-05-23
Messages : 269
Likes : 8

Tuto : Ruby - mechanize utiliser google pour trouver des proxy

voilà un bout de code pour faire une requête sur google, récupérer les serp, et parser les pages résultats avec un regex de type IP:PORT ou IP:DOMAIN


Les libs à inclure :

#!/usr/bin/env ruby
# encoding: UTF-8

require 'net/http'
require 'uri'
require 'fileutils'
require 'logger'
require 'mechanize'
require 'nokogiri'


création d'une instance de mechanize qu'on envoi direct sur google pour la requete, et récupération de la première page de serp :

@agent = Mechanize.new do |a|
  a.user_agent_alias =  'Linux Konqueror'
  a.max_history = 1
  a.log = Logger.new(STDOUT)
end

page = @agent.get 'http://www.google.com/'

form = page.form_with(:action => '/search')
form['q'] = 'ce que je veux trouver, keywords du genre free proxy, proxy list, proxies list, ...'
page_serps = form.submit


on parse le résultat de la requete pour obtenir la liste des urls de la premlière page de serps :

urls_array = []
page_serps.parser.xpath('//h3[@class="r"]').take(10).each do |site|
  urls_array << URI::extract( site.to_s, [ 'http' ] )
end

pour chacune des urls, on visite la page et on extrait les blocs de texte pur :

regex_ip_port = '\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?:?[0-9]{0,5})\b'
regex_domain_port = '^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}:[0-9]{0,5}$'

urls_array.each |test_url|
     response = Net::HTTP.get_response( URI.parse( test_url ) )
     doc = Nokogiri::HTML(response.body)
     res = doc.xpath("//text()").text

pour chacun des blocs de texte récupéré, on test l'occurence du regex de type IP:PORT ou IP:DOMAIN :

     res.each do |part|
       part.split(" ").each do |sub_part|
         if sub_part.match(regex_ip_port) || sub_part.match(regex_domain_port)
            puts sub_part.match(regex_ip_port)
            puts sub_part.match(regex_domain_port)                              
         end
       end
     end
end

voilà wink
hope this help

edit : il y avait qlqs coquilles que j'ai corrigé smile

tuto ruby mechanize

Dernière modification par conquering_lion (2014-03-15 12:12:09)

0
J'aime ❤️

🔴 Hors ligne

#2 2013-07-11 22:26:53

Mention Jaffaar
🥇 Grade : Guardian

AdminMembre du Black LaboMembre du CercleOfficierForce PolyvalenteIngénieur webKilluavie1000likesConsomateur de Liens1000 messagesMembre HospitalierPhilantrope
Lieu : Consultant SEO / WEB
Inscription : 2012-06-01
Messages : 8 091
Likes : 1142

Développement PHP
Développement JS
Networking SEO
Social Engineering

Re : Tuto : Ruby - mechanize utiliser google pour trouver des proxy

Merci pour ton partage wink

conquering_lion a écrit :

hope this help

j'aimerai pouvoir me monter un serveur et tester ce code smile

Vais essayer de bloquer tu temps ! toujours du temps ! Plus de bot ! plus de Brain ! lol


How to Rank ?
Ebook : Ninjalinking 2022 (-25% : labo25e)           
Conseils stratégique ou tech ? ( Skype : jaffaarbh )

0
J'aime ❤️

🔴 Hors ligne

#3 2013-07-12 13:14:55

Mention conquering_lion
🥉 Grade : Scout

Auxiliaire
Inscription : 2013-05-23
Messages : 269
Likes : 8

Re : Tuto : Ruby - mechanize utiliser google pour trouver des proxy

nop smile

d'ailleurs j'ai remarqué que le thread rankait bien sur les mots clés "tuto ruby watir" ou même "tuto ruby mechanize" que j'ai posté hier , déjà dans le top ten .. jv peut être (surement) me faire un mini site de contenu sur le sujet avec des tuto dans le genre (si j'ai le temps ....)


ahhh le temps .. c'est pareil, des tonnes de notes à droite à gauche , des todo list jamais terminé ... des appli à terminer, à commencer ..


edit : d'ailleurs le format est-il mieux / plus lisible que le premier post sur ruby ? car pas évident de faire un truc ludiqe et complet à la fois ..

Dernière modification par conquering_lion (2013-07-12 13:16:11)

0
J'aime ❤️

🔴 Hors ligne

Pied de page des forums