Понадобилась база английских имен и фамилий. Поискал в интернете, не нашел. Набрел на сайт с более-менее приличной базой, http://www.familytree.ru/. Заодно решил освоить curl, т.к. руки раньше не доходили. Написал простенький парсер вменяемых (без всяких там апострофов и прочей ерести) английских имен и фамилий с сайта http://www.familytree.ru/. PHP: <?phpset_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://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://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://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); $res_curl = iconv("windows-1251","utf-8", $res_curl); 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); var_dump('n: ' . $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; $family = array();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); $res_curl = iconv("windows-1251", "utf-8", $res_curl); 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; // If surname already in array skip it. if(in_array($name, $family)) continue; var_dump('f:' . $name); $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
Нашел интересную ссылку, жалко поздно. По ссылке добрый человек выложил базу на 9 мб. http://www.seocoder.org/2008/10/01/baza-angloyazychnyx-imen-i-familij/
Добавил парсер русских имен и фамилий для сайтов http://www.vse-familii.com/ и http://www.vse-imena.com/
Это раздел программирования, вы извратили понятие само слова "Программист", что тут может быть полезного для нормального кодера? Банальный парсинг странички с регуляркой. Пусть так и остается в отдельной теме, возможно кто-то с гугла прийдет, а засорять топики связанные с программированием не стоит.
Вообще-то, это намного полезнее 90% того, что выложено в "Полезных скриптах". Что касается англоязычных имен/фамилий - то данные переписи США доступны официально с указанием частоты употребления. http://www.census.gov/genealogy/names/names_files.html
Изначально, срочно нужен был антивирус, залез на torrents.ru и качнул Avira. Позже в поисках кряка в той же теме, узнал, что Avira раздает триальные ключи по 3 месяца на каждое мыло. Оттуда же узнал о забавном сервисе, которые генерирует мыло на 10 минут. Краткая инструкция для получения ключа выглядела так: Тут естественно в голове всплыло, что бы генерировать эти ключи каждые день автоматически. И по необходимости просто заходить на страницу и брать ключ с максимальным временем использования. Собственно нужна была база фамилий и имен, что бы это выглядело более менее правдоподобно, хотя потом оказалось, в те поля хоть мыло можно вписывать. Для этого и накатал скрипт представленный в первой темы. А вот собственно код сервиса, который я и хотел реализовать. 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('#[email protected]#',$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/
Я занимаюсь аутсорсингом фирм, пришел, влепил ключ на 3 месяца. Через 3 месяца пришел, обновил, денег получил.