AOL сошел с ума или авторегер на mail.com
Не понятно какие тараканы укусили админов AOL, но подконтрольный AOL’у сервис mail.com с какого-то перепуга отменил капчу при регистрации мыла.
В связи с этим событием, с которым может сравнится только финал ЧМ-2010, в адекватности судьи которого, кстати, я не уверен и не признаю никакого другого ЧМ кроме Нидерландов, я считаю просто необходимо написать авторегер под эту штуку.
Сам скрипт авторега я не написал еще, да думаю и не надо, каждый и сам сможет переписать выложенный здесь код под свои нужды. А написал я класс или точнее сказать скрипт-библиотеку, естественно на Ruby, который содержит все необходимые методы для регистрации мыла, быть может заисключением проверки адреса на существование.
Сам скрипт
#!/usr/bin/ruby
require ‘net/http’
require ‘net/https’def str2pc(str)
if !str then return “|ERR=#{str}|” end
i=0
pc=”
while i<str.size do
pc+=”%#{str[i].to_s(16)}”.upcase
i+=1
end
return pc
endclass Acc
attr_accessor :login,:pass,:domain
def initialize(login,pass,domain)
@login=login
@pass=pass
@domain=domain
@http=Net::HTTP.new(‘signup.mail.com’, 443)
@http.use_ssl = true
@path=’/UserInformationB.aspx’
enddef get_headers(refer)
return headers = {
‘Cookie’ => @cookie,
‘Referer’ => refer,
‘Content-Type’ => ‘application/x-www-form-urlencoded’,
‘User-Agent’=> ‘Mozilla/5.0 Gecko/20090909 Windows NT 5.0/9′
}
enddef get_fst_cook
begin
resp, data = @http.get(@path, nil)
@cookie = resp.response['set-cookie']
@__VIEWSTATE=data.split(“__VIEWSTATE\” value=\”")[1].split(“\”")[0]
@__EVENTVALIDATION=data.split(“__EVENTVALIDATION\” value=\”")[1].split(“\”")[0].gsub!(/([^a-zA-Z0-9])/){str2pc($1)}
rescue
return e
end
return 0
enddef reg
begin
data = “__VIEWSTATE=#{@__VIEWSTATE}&__EVENTVALIDATION=#{@__EVENTVALIDATION}&hOptin=2&hdCheckbox=1&hdCampaignCheckbox=0&RefenceCode=event01&TrkID=0000&FirstName=fdsjhfj&LastName=jkvhfsdjk&drpMonth=06&drpDay=07&drpYear=1975&Username=#{@login}&Domainname=#{@domain}&Password=#{@pass}&PasswordConfirm=#{pass}&setpw=False&SecQuestion=3&SecAnswer=bhgfhgfhjfghgfhg&Agreed=Create+Account”
resp, data = @http.post(@path, data, self.get_headers(‘https://signup.mail.com/UserInformationB.aspx’))
@cookie = @cookie+resp.response['set-cookie']
@path=resp['location']
resp, data = @http.get(@path, self.get_headers(‘https://signup.mail.com/UserInformationB.aspx’))
@path=resp['location']
resp, data = @http.get(@path, self.get_headers(“https://signup.mail.com/#{@path}”))
rescue => e
return e
end
return 0
end
end#class
#EXAMPLE
accs=Acc.new(“test”,”example”,”california.usa.com”) #test@california.usa.com:example
puts accs.get_fst_cook
puts accs.reg
Немного разберем скрипт.
Итак, он содержит 1 функцию – str2pc и класс Acc. str2pc преобразует символы в процент-код.
Класс Acc
- метод get_headers – возвращает заголовок пакета
- метод get_fst_cook – получает необходимые кукисы и параметры для дальнейшей регистрации
- метод reg – собственно сама регистрация
Рассмотрим подробнее метод get_fst_cook. Он получает страницу регистрации /UserInformationB.aspx методом GET, а в месте с ней и первые кукисы. Далее парсит страницу на 2 необходимых параметра:
- __VIEWSTATE
- __EVENTVALIDATION
причем в __EVENTVALIDATION попутно заменяются все символы, неудовлетворяющие регулярному выражению ([^a-zA-Z0-9]) на процент-код.
Метод reg. Отправляет собственно сам POST-запрос регистрации, а затем 2 GET запроса на страницы /UserInformationB.aspx и той, на которую стоит переадресации в полученном пакете. Последний запрос не обязателен и регистрация пройдет и без него, однако он нужен если вы не хотите получить при входе на мыло страницу о успешной реги и прочей фигне.
Как использовать класс
Все очень просто и пример описан под комментарием #EXAMPLE:
- в конструкторе вводим логин, пароль и домен – accs=Acc.new(“test”,”example”,”california.usa.com”)
- вызываем get_fst_cook, в случае ошибки возвращает текст ошибки, иначе 0 – accs.get_fst_cook
- вызываем reg, в случае ошибки возвращает текст ошибки, иначе 0 – accs.reg
Это все. Чтобы сделать из этой библиотеки полноценный авторегер особого ума не надо, и если же вы все-таки его сделаете незабудьте выложить в паблик.
Скачать скрипт в нормальном виде можно здесь.
P.S. хочу также сказать спасибо nonamez’у за его пост в его блоге, где он поведал о плагине для FireFox Live HTTP Headers, без него было бы тяжко разбирать снифером HTTPS-пакеты. Статью можно прочитать здесь.
Не совсем получилось…
require “lib”
names = []
families = []
words = []
domains = []
IO.readlines(‘../common/names.txt’).each { |line| names << line }
IO.readlines('../common/family.txt').each { |line| families << line }
IO.readlines('../common/words').each { |line| words << line }
IO.readlines('domains').each { |line| domains <>
Макар;Масмехов;cambersjugged;toriamosfan.com;go92_toxemia0
0
/usr/local/lib/ruby/1.8/net/http.rb:1474:in `initialize’: undefined method `empty?’ for nil:NilClass (NoMethodError)
from /usr/local/lib/ruby/1.8/net/http.rb:1592:in `initialize’
from /usr/local/lib/ruby/1.8/net/http.rb:772:in `new’
from /usr/local/lib/ruby/1.8/net/http.rb:772:in `get’
from ./lib.rb:68:in `reg’
from reg.rb:23
from reg.rb:13:in `times’
from reg.rb:13
Говорит, что resp['location'] = nil
@path = resp['location']
Исходники.
авторегер:
http://codepaste.ru/3656/
твоя либа (дописаная):
http://codepaste.ru/3657/
Я тут решил зайти на мыла, которые были нареганы авторегом с одного IP и вот что я увидел вместо списка писем
Вывод: авторег должен работать через прокси.
Как вставить рисунок в комментарий ?
Вставлять рисунок в коммент могу только я. Если вам нужно что-то вставить закачайте на фотохостинг, а здесь напишите ссылку.
Лукмус руль!!! Давай больше “тем”, спс за скрипт)
Да прибудет с тобой Сила !