Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

23.01.2010, 02:56
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме: 389768
Репутация:
158
|
|
База имен и фамилий
Понадобилась база английских имен и фамилий. Поискал в интернете, не нашел. Набрел на сайт с более-менее приличной базой, http://www.familytree.ru/.
Заодно решил освоить curl, т.к. руки раньше не доходили.
Написал простенький парсер вменяемых (без всяких там апострофов и прочей ерести) английских имен и фамилий с сайта http://www.familytree.ru/.
PHP код:
<?php
set_time_limit(0);
parse('dbfamily.php','family.txt');
parse('dbname.php','name.txt');
function parse($file_parse,$file_save)
{
$start = 1;
$reg = '#<a href='.str_replace('.','\.',$file_parse).'\?pos=[0-9]+>([A-z]+)</a>#';
while(true)
{
$url = 'http://www.familytree.ru/ru/dbf/'.$file_parse;
$post = 'kpgdn=+%3E+&ipos='.$start;
$start += 201;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($cookie) curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match_all($reg,$res_curl,$matches);
if(empty($matches[0])) break;
else
{
foreach($matches[1] as $val) $final[] = $val;
}
if(preg_match('/^Set-Cookie: (.*)/m', $res_curl, $source_cookie))
$cookie = trim($source_cookie[1]);
}
$final_write = implode(chr(10),$final);
file_put_contents($file_save,$final_write);
}
?>
На выходе имеем примерно 7к имен и 30к фамилий.
Забрать то, что имеем, можно по ссылке:
http://solker.spb.ru/family.zip
Для русских имен и фамилий я парсил сайт http://www.vse-familii.com/ и http://www.vse-imena.com/ соответственно.
PHP код:
<?php
set_time_limit(0);
// Name
$url = 'http://www.vse-imena.com/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match_all('#imena-g[0-9]+\.html#',$res_curl,$female_pages);
preg_match_all('#imena-m[0-9]+\.html#',$res_curl,$male_pages);
$pre_all_pages = array_merge($female_pages[0],$male_pages[0]);
$all_pages = $pre_all_pages;
foreach($pre_all_pages as $page)
{
$url = 'http://www.vse-imena.com/'.$page;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
$page = str_replace('.html','',$page);
preg_match_all('#'.$page.'-[0-9]+\.html#i',$res_curl,$temp_pages);
foreach($temp_pages[0] as $tmp)
if($tmp) $all_pages[] = $tmp;
}
foreach($all_pages as $page)
{
$url = 'http://www.vse-imena.com/'.$page;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match_all('#(<TD width=30% valign=top>|<br>)(.+?)(<br>|<\/td>)#i',$res_curl,$matches);
foreach($matches[0] as $source_name)
{
$name = strip_tags($source_name);
if(!$name or $name == 'Заказать вытяжка кухня') continue;
if(strpos($name,' '))
{
$temp = explode(' ',$name);
$name = $temp[0];
}
if(strpos($name,'.')) continue;
if(strlen($name) < 3) continue;
if(ord(substr($name,0,1)) < 192 or ord(substr($name,0,1)) > 223) continue;
$names[] = $name;
}
}
sort($names);
$final_write = implode(chr(10),$names);
file_put_contents('name_rus.txt',$final_write);
// Family
$url = 'http://www.vse-familii.com/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match_all('#familii-[0-9]+\.html#',$res_curl,$pre_all_pages);
$pre_all_pages = $pre_all_pages[0];
$all_pages = $pre_all_pages;
foreach($pre_all_pages as $page)
{
$url = 'http://www.vse-familii.com/'.$page;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
$page = str_replace('.html','',$page);
preg_match_all('#'.$page.'-[0-9]+\.html#i',$res_curl,$temp_pages);
foreach($temp_pages[0] as $tmp)
if($tmp) $all_pages[] = $tmp;
}
foreach($all_pages as $page)
{
$url = 'http://www.vse-familii.com/'.$page;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match_all('#(<TD width=30% valign=top>|<br>)(.+?)(<br>|<\/td>)#i',$res_curl,$matches);
foreach($matches[0] as $source_name)
{
$name = strip_tags($source_name);
if(!$name or $name == 'Заказать вытяжка кухня') continue;
if(strpos($name,' '))
{
$temp = explode(' ',$name);
$name = $temp[0];
}
if(strpos($name,'.')) continue;
if(strlen($name) < 3) continue;
if(ord(substr($name,0,1)) < 192 or ord(substr($name,0,1)) > 223) continue;
$family[] = $name;
}
}
sort($family);
$final_write = implode(chr(10),$family);
file_put_contents('family_rus.txt',$final_write);
?>
На выходе получил 17к фамилий и 14к имен.
Забрать можно по ссылке:
http://solker.spb.ru/family_rus.zip
Последний раз редактировалось Solker; 23.01.2010 в 07:12..
|
|
|

23.01.2010, 03:04
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
Думаю посту место в http://forum.antichat.ru/thread65761.html
|
|
|

23.01.2010, 03:05
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме: 389768
Репутация:
158
|
|
Совсем позабыл про нее.
|
|
|

23.01.2010, 03:06
|
|
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме: 4778940
Репутация:
1257
|
|
Ты бы лучше базой поделился.
|
|
|

23.01.2010, 03:28
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме: 389768
Репутация:
158
|
|
mr.The
Добавил в первое сообщение.
|
|
|

23.01.2010, 04:23
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме: 389768
Репутация:
158
|
|
Нашел интересную ссылку, жалко поздно.
По ссылке добрый человек выложил базу на 9 мб.
http://www.seocoder.org/2008/10/01/baza-angloyazychnyx-imen-i-familij/
|
|
|

23.01.2010, 07:13
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме: 389768
Репутация:
158
|
|
Добавил парсер русских имен и фамилий для сайтов
http://www.vse-familii.com/ и http://www.vse-imena.com/
|
|
|

23.01.2010, 11:43
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме: 1698585
Репутация:
818
|
|
Сообщение от GlooK
Думаю посту место в http://forum.antichat.ru/thread65761.html
Это раздел программирования, вы извратили понятие само слова "Программист", что тут может быть полезного для нормального кодера? Банальный парсинг странички с регуляркой. Пусть так и остается в отдельной теме, возможно кто-то с гугла прийдет, а засорять топики связанные с программированием не стоит.
|
|
|

23.01.2010, 12:06
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Вообще-то, это намного полезнее 90% того, что выложено в "Полезных скриптах". Что касается англоязычных имен/фамилий - то данные переписи США доступны официально с указанием частоты употребления.
http://www.census.gov/genealogy/names/names_files.html
|
|
|

23.01.2010, 15:48
|
|
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме: 389768
Репутация:
158
|
|
Изначально, срочно нужен был антивирус, залез на torrents.ru и качнул Avira. Позже в поисках кряка в той же теме, узнал, что Avira раздает триальные ключи по 3 месяца на каждое мыло. Оттуда же узнал о забавном сервисе, которые генерирует мыло на 10 минут.
Краткая инструкция для получения ключа выглядела так:
1. Заходим на http://10minutemail.com/10MinuteMail/index.html и получаем временный почтовик.
2. Заходим на https://license.avira.com/en/promotion-hylm9fbv7chaxs8zbl83 , заполняем форму и вставляем мыло, после жмем кнопочку и в течении 2-3 мин на почтовике смотрим письмо, в котором находим ссылку на получение ключа.
3. Получаем удовольствие.
Тут естественно в голове всплыло, что бы генерировать эти ключи каждые день автоматически. И по необходимости просто заходить на страницу и брать ключ с максимальным временем использования. Собственно нужна была база фамилий и имен, что бы это выглядело более менее правдоподобно, хотя потом оказалось, в те поля хоть мыло можно вписывать. Для этого и накатал скрипт представленный в первой темы.
А вот собственно код сервиса, который я и хотел реализовать.
PHP код:
<?php
set_time_limit(0);
$names = file('name.txt');
$name = $names[rand(0,count($names))];
$familys = file('family.txt');
$family = $familys[rand(0,count($familys))];
list($mail,$cookie) = reg_new_mail();
if(submit_form_avira($name,$family,$mail))
{
for($i=0;$i<20;$i++)
{
if(check_mail($cookie))
{
echo 'Latter!'.chr(10);
$link = read_letter($cookie);
list($location,$cookie) = avira_login($link);
$file = get_avira_key($location,$cookie);
$file_name = 'Hbedv(Avira_Premium_Security_Suite_Valid_Until_'.date('d-m-Y',time()+60*60*24*90).').key';
file_put_contents('keys/'.$file_name,$file);
echo $file_name.' created!';
break;
}
else
{
echo 'Wait...'.chr(10);
sleep(10);
}
}
}
function submit_form_avira($name,$family,$mail)
{
$url = 'https://license.avira.com/en/promotion-hylm9fbv7chaxs8zbl83';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match_all('#action="(.+?)"#',$res_curl,$matches);
$action = $matches[1][1];
preg_match('/^Set-Cookie: (.*)/m', $res_curl, $source_cookie);
$cookie = trim($source_cookie[1]);
$post = "customerSalutationId=MIS&customerFirstname=$name&customerLastname=$family&customerEmail=$mail&customerCountryId=BI&buttonActivate=Request license now";
$url = 'https://license.avira.com/'.$action;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$res_curl = curl_exec($ch);
curl_close($ch);
return $res_curl;
}
function reg_new_mail()
{
$url = 'http://10minutemail.com/10MinuteMail/index.html';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match('/^Set-Cookie: (.*)/m', $res_curl, $source_cookie);
$cookie = trim($source_cookie[1]);
preg_match('#<br \/>(.+) is your temporary e-mail address#i',$res_curl,$source_mail);
$mail = $source_mail[1];
return $array = array($mail,$cookie);
}
function check_mail($cookie)
{
$url = 'http://10minutemail.com/10MinuteMail/index.html';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
if(preg_match('#avpe@avira.com#',$res_curl,$match))
return $res_curl;
else return false;
}
function read_letter($cookie)
{
$url = 'http://10minutemail.com/10MinuteMail/index.html?dataModelSelection=message%3Aemails%5B0%5D&actionMethod=index.xhtml%3AmailQueue.select';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match('#^https:\/\/license\.avira\.com\/en\/hs-(.+)\.#m',$res_curl,$matches);
$link = 'https://license.avira.com/en/hs-'.$matches[1];
return $link;
}
function avira_login($link)
{
$url = $link;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match('/^Set-Cookie: (.*)/m', $res_curl, $source_cookie);
$cookie = trim($source_cookie[1]);
preg_match('/^Location: (.*)/m', $res_curl, $source_location);
$location = trim($source_location[1]);
return $array = array($location,$cookie);
}
function get_avira_key($location,$cookie)
{
$url = 'https://license.avira.com/en/'.$location;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
preg_match('#href="\/customer\/(.+?)"#',$res_curl,$matches);
$key_link = 'https://license.avira.com/customer/'.$matches[1];
$url = $key_link;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res_curl = curl_exec($ch);
curl_close($ch);
return $res_curl;
}
?>
Это дело кидается в крон и выполняется каждые сутки для генерации нового ключа.
И собственно готовый результат.
http://solker.spb.ru/avira/
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|