Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Вт Июл 24, 2012 10:52 am Заголовок сообщения: оставлю здесь |
|
|
Вечером попробую на денвере запустить.
Интересно. Файлик с 900 000 строками php обработает за минуту-две. Как MySQL отнесется к такому количеству запросов?
Код: | <?php
class Config{
var $DB_HOST="localhost";
var $DB_USER="user";
var $DB_PASS="pass";
var $DB_NAME="db";
}
class Db extends Config{
private $connection;
/*static public $counter;*/
function __construct(){
$this->open_connection();
/*Db::$counter=0;*/
}
private function open_connection(){
$this->connection=mysql_connect($this->DB_HOST,$this->DB_USER,$this->DB_PASS);
if(!$this->connection){
die("DB connection failed ".mysql_error());
}else{
$db_select=mysql_select_db($this->DB_NAME);
if(!$db_select){
die("DB selection failed ".mysql_error());
}
}
mysql_query("set names utf8") or die("set names utf8 failed");
}
public function sql($query){
$result=mysql_query($query, $this->connection);
if(!$result){
die("DB query failed".mysql_error());
}
/*Db::$counter++;*/
return $result;
}
}
$db=new db();
$handle = fopen("mail.txt", "r");
while (($buffer = fgets($handle, 50)) !== false) {
/*$buffer=urlencode($budder)."\\n";*/ //implode после извлечения из базы данных с разделителем "\n" и url-энкодом
$sql="INSERT INTO emails (email) VALUES('{$buffer}'')";
$test=$db->sql($sql);
}
fclose($handle);
/*
Перегнали все адреса в базу данных.
Запрос:
http://my.mail.ru/cgi-bin/my/ajax?ajax_call=1&data=[%22
implode(1000 емейлов из базы данных);
Храним где-то в файле id последнего обработанного e-mail
%22%2Cnull%2Cnull%2C%22email%22]&encoding=windows-1251&func_name=import.invite&mna=88431&mnb=4060437364
грузим в фрейме каждые 20 минут (30, 45, 60 - для разных аккаунтов)
*/
?> |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Вт Июл 24, 2012 11:09 am Заголовок сообщения: |
|
|
Код: | <?php
$file_name="counter.txt";
if(!file_exists($file_name)){
$counter=0;
}else{
$file=fopen($file_name, 'r');
$counter=unserialize(fread($file,filesize($file_name)));
fclose($file);
}
$url="http://my.mail.ru/cgi-bin/my/ajax?ajax_call=1&data=[%22";
$sql="SELECT email FROM emails LIMIT ".$counter.",".$counter+1000;
$test=$db->sql($sql);
while ($row = mysql_fetch_assoc($test)){ //$row['email']
$url.=urlencode($row['email'])."\\n";
}
$url.="%22%2Cnull%2Cnull%2C%22email%22]&encoding=windows-1251&func_name=import.invite&mna=88431&mnb=4060437364";
$counter+=1000;
$file=fopen($file_name, 'w+');
$counter=serialize($counter);
fwrite($file, $counter);
fclose($file);
?> |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Вт Июл 24, 2012 11:17 am Заголовок сообщения: |
|
|
Код: | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language='JavaScript' type="text/javascript">
refreshFrame = function(){
document.getElementById('frame1').location.reload()
setTimeout(function(){refreshFrame()},3600000)
}
</script>
</head>
<body>
<iframe src="mails.php" id="frame1"></iframe>
</body>
</html> |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 1:31 pm Заголовок сообщения: |
|
|
Весь кайф обломала капча. Надо придумать, как ее обойти. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 1:39 pm Заголовок сообщения: |
|
|
["AjaxResponse","OK","captcha","673993425"] - json-ответ на мой ajax-запрос. Видим, что mail.ru хочет впарить нам капчу.
Капча формируется скриптом get_image:
http://my.mail.ru/cgi-bin/my/get_image?id=673993425
%22%2C%22673993425%22%2C%22994197%22%2C%22email%22%5D&mna=438693&mnb=4060263358&encoding=windows-1251
после отправки второго Ajax-запроса с введенной капчей - та-же капча уже не работает.
Стало быть, капчу все-же вручную придется вводить. Надо распарсить в php (думаю, функция explode или json_encode) ответ сервера и выдать картинку и формочку, с которой постом будем коннектить к url-у капчку и ответ на нее |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:03 pm Заголовок сообщения: |
|
|
Эти файлом вбиваем нашу текстовую базу из 900 000 адресов в базу данных (не забываем поправить в php.ini max_execution_time. Ну хотя-бы полчасика сюда вставим, иначе только по 40 000 адресов за раз обрабатывает)
Этот файл у нас формирует запрос из 1000 мейлов грузит запрос через фрейм
Как получить скриптом ответ сервера? Попробуем file_get_contents (с потоковым контекстом через stream_context_create), если не прокатит - будем пытаться использовать самую страшную черную магию (cURL)
Жаль, конечно, что не получилось автоматизировать на столько, на сколько хотел изначально. Но и этот вариант, в принципе, тоже не плох. Запущу где-то в маленьком окошке и буду периодически вводить эту вашу ёбаную капчу, че уж там |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:05 pm Заголовок сообщения: |
|
|
Еще одну неприятность заметил. Get-запросом невозможно передать такой объем данных в тот скриптец. Надо придумать обходной путь. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:11 pm Заголовок сообщения: |
|
|
Мяу писал(а): | Попробуем file_get_contents (с потоковым контекстом через stream_context_create) |
file_get_contents в чистом виде вернул хуйню:
["AjaxResponse","Redirect","/cgi-bin/login?noclear=1"]
Надо отправить вместе с запросом куку, мол я авторизован уже на сайте. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:16 pm Заголовок сообщения: |
|
|
Заголовки запроса:
Accept text/javascript, text/html, application/xml, text/xml, */*
Accept-Encoding gzip, deflate
Accept-Language ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Connection keep-alive
Content-Length 143
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Cookie VID=2xMZRU2--cn0; mrcu=562D4F74494D0BADEF320FA193D9; p=kKcGAMv/PQAA; b=uTwJCEAK9gQApvgqwF2tYBgGg00DDKL4SigSy0CJgwIqvgoBACB0jgHxJylEqgUbQ/w8kXCWukjxGTkknNEWEs7qCAkA; Mpop=1343225487:006f765a41646b0619050219081d00051c0d0a4f6a5d5e465e05030705021e0b09001e4b584b454903050705145c555e551f4243:rasty2222@mail.ru:; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAbAAcEwwcA; c=P80PUAAAAKhjAAASAQAAfgCA; i=AQCAyg9QAQATAAgHAhwAASEAAQ==; odklmbind=1342509535519_1440565196403; searchuid=1170222711333014250; hses=1; profilecookiepromo=1
Host my.mail.ru
Referer http://my.mail.ru/?from=splash
User-Agent FSB
X-Prototype-Version 1.6.0.3
X-Requested-With XMLHttpRequest |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:16 pm Заголовок сообщения: |
|
|
извлечем отсюда пока только куки и отправим их серваку |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:21 pm Заголовок сообщения: |
|
|
Хуячим:
Код: | $opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept: text/javascript, text/html, application/xml, text/xml, */*\r\n" .
"Cookie: VID=2xMZRU2--cn0; mrcu=562D4F74494D0BADEF320FA193D9; p=kKcGAMv/PQAA; b=uTwJCEAK9gQApvgqwF2tYBgGg00DDKL4SigSy0CJgwIqvgoBACB0jgHxJylEqgUbQ/w8kXCWukjxGTkknNEWEs7qCAkA; Mpop=1343225487:006f765a41646b0619050219081d00051c0d0a4f6a5d5e465e05030705021e0b09001e4b584b454903050705145c555e551f4243:rasty2222@mail.ru:; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAbAAcEwwcA; c=P80PUAAAAKhjAAASAQAAfgCA; i=AQCAyg9QAQATAAgHAhwAASEAAQ==; odklmbind=1342509535519_1440565196403; searchuid=1170222711333014250; hses=1; profilecookiepromo=1\r\n"
)
);
$context = stream_context_create($opts);
$response = file_get_contents($url, false, $context);
echo $response; |
Получаем в браузере ответ:
["AjaxResponse","OK","captcha","162485294"]
Все работает. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:24 pm Заголовок сообщения: |
|
|
Декодируем ответ сервера:
Код: | $json=json_decode($response);
echo "<pre>";
print_r($json);
echo "</pre>"; |
Получаем массив:
Код: | Array
(
[0] => AjaxResponse
[1] => OK
[2] => captcha
[3] => 470919385
) |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:26 pm Заголовок сообщения: |
|
|
Код: | echo "<img src=\"http://my.mail.ru/cgi-bin/my/get_image?id=".$json[3]."\"/>"; |
Вот, блять. На капче нолики. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:31 pm Заголовок сообщения: |
|
|
Подменить реферер не получится - скрипт выполняется на том-же домене. Вот блять. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24387
Награды: Нет
|
Добавлено: Ср Июл 25, 2012 2:35 pm Заголовок сообщения: |
|
|
Мяу писал(а): | Подменить реферер не получится |
Да за нехуй делать
|
|
Вернуться к началу |
|
|
|