Jak wylistować sobie miasta u pewnego dużego dostawcy usług internetowych ?

Oczywiście prezentowany sktypt jest banalny, jednak można go sobie ładnie rozbudować, niestety strony znanych mi providerów takich jak UPC i innych podobnoych są bardzo słabo zabezpieczone pod wieloma względami i oto mała prezentacja co można zrobić ze stronami “user frendly”, których jest coraz więcej.

#!/usr/local/bin/ruby
require 'rubygems'
require 'curl-multi'
require 'json'

curl = Curl::Multi.new

towns = Array.new
letters = ('a'..'z')

on_success_town = lambda do |body|
puts JSON.parse(body)
end

on_failure = lambda do |ex|
puts 'Failure.'
puts ex
end

letters.each do |letter|
curl.get('http://strefaklienta.upc.pl/cckservices/rfs/city?q='+letter+'&limit=999', on_success_town, on_failure)
curl.select([],[]) while curl.size > 0;
end

W wyniku otrzymamy listę miast w zasięku sieci UPC, oczywiście można pójść kawałek dalej i otrzymać listę ulic, a nawet numery bloków dołożyć do tego googlemaps i w parę minut mamy bardzo dokładną mapkę zasięgu sieci UPC, dane na pozór mało istotne, ale jak się tak głębiej zastanowić to mogą się okazać przydatne.

Kawałek output’u z powyższego sktyptu:

	(...)
	Bukowno k. Olkusza
	Bydgoszcz
	Bytom
	Chęciny
	Chełm
	Chorzów
	Ciechanów
	Czeladź
	Czerwionka Leszczyny
	Częstochowa
	Dąbrowa Górnicza
	Dzierżoniów
	Gdańsk
	Gdynia
	Gliwice
	(...)