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

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

Annonce

Participez au Concours Seo 2016 Officiel ! | Faites un bond en avant avec la formation SEO Ranking Skills le 12 Avril 2017

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

Mention conquering_lion
Scout
Inscription : 2013-05-23
Messages : 176

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)

Hors ligne

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

Mention Jaffaar
Guardian
Lieu : Marseille
Inscription : 2012-06-01
Messages : 4 788

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

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


⌕ Tu veux Ranker ?
⏩ Actives le mode automatique avec SEO Quartz
⏩ Découvres l' ebook Architecture SEO
⏩ Trouves la formation SEO Ranking Skills dans Google

Hors ligne

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

Mention conquering_lion
Scout
Inscription : 2013-05-23
Messages : 176

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)

Hors ligne

Pied de page des forums