ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11041  
Старый 17.06.2009, 18:25
Аватар для Fepsis
Fepsis
Постоянный
Регистрация: 17.09.2008
Сообщений: 562
Провел на форуме:
6962560

Репутация: 536


По умолчанию

Цитата:
Сообщение от geforse  
Всё понятно, только когда курлом шлю, вылезает алерт "Невозможно было авторизоваться" и за ним ещё один "Вы действительно хотите уйти с этой страницы ?"
Авторизуешься ты вот так:
PHP код:
$cl curl_init();
curl_setopt($clCURLOPT_URL
'http://koi.mail.ru/cgi-bin/auth?page=http%3A%2F%2Fwmrim.mail.ru%2Fwin%2Fcontactlist.html&FailPage=http%3A%2F%2Fwin.mail.ru%2Fcgi-bin%2Floginagent&post=&login_from=&Login=логин&Domain=mail.ru&Password=пароль&x=0&y=0');
curl_setopt($clCURLOPT_RETURNTRANSFER1);  
curl_setopt($clCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)');   
curl_setopt($clCURLOPT_HEADER1);  
curl_setopt($clCURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
$ex curl_exec($cl); 
Если сразу после этого сделаешь:
PHP код:
$cl curl_init();
curl_setopt($clCURLOPT_URL'http://win.mail.ru/cgi-bin/start?back=1');  
curl_setopt($clCURLOPT_COOKIEFILE,$_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
$ex curl_exec($cl); 
echo 
$ex
То попадёшь в почтовый ящик, что говорит о том, что авторизация прошла успешно...
Но туда, куда тебе надо (http://wmrim.mail.ru/win/contactlist.html?post=&x=0&y=0&login_from= как я понял) просто так не пускает..
 
Ответить с цитированием

  #11042  
Старый 17.06.2009, 18:35
Аватар для FireFenix
FireFenix
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме:
3178262

Репутация: 389
По умолчанию

PHP код:
<form method="post" action="?">
<input type="text" name="Login" value=""><br>
<input type="text" name="Password" value=""><br>
<select name="Domain">
  <option value="mail.ru"  selected>@mail.ru</option>
  <option value="inbox.ru" >@inbox.ru</option>
  <option value="bk.ru" >@bk.ru</option>
  <option value="list.ru" >@list.ru</option>
</select><br>
<input type=checkbox name="level" value=1 id="alien"><label for="alien">Чужой компьютер</label><br>
<input type="submit" value="Отправить">
</form>

<?php

if (isset($_POST['Login']) && isset($_POST['Password']) && isset($_POST['Domain']))
{
  foreach (
$_POST as $key => $value)
  {
    if (
strlen($post) > 0) {$post .= '&';}
    
$post .= $key '=' $_POST[$key];
  }

  
$ch curl_init(); 
  
curl_setopt($chCURLOPT_RETURNTRANSFER0); 
  
curl_setopt($chCURLOPT_URL"http://koi.mail.ru/cgi-bin/auth"); 
  
curl_setopt($chCURLOPT_HEADER1); 
  
curl_setopt($chCURLOPT_POSTFIELDS$post); 
  
curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');  
  
curl_setopt($chCURLOPT_COOKIEFILE'cookie.txt');  
  
curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
  
curl_setopt($chCURLOPT_USERAGENT"Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1"); 
  
curl_setopt($chCURLOPT_POST1); 
  
$result curl_exec($ch);
  
  echo(
$result);
}

?>
У меня вот всё работает

Последний раз редактировалось FireFenix; 17.06.2009 в 18:38..
 
Ответить с цитированием

  #11043  
Старый 17.06.2009, 18:40
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

FireFenix, ты авторизовался просто в mail.ru, а не в мейл-агенте, как просят.

Туда пускает, просто там всё реализовано с помощью AJAX, курл не поможет. Когда я писал скрипт для отправки sms через мейл-агент, помимо авторизации там требовалось поддерживать еще одно keep-alive соединение, иначе сервер просто выкидывал.

Что именно требуется? Получить контакт-лист?
 
Ответить с цитированием

  #11044  
Старый 17.06.2009, 18:45
Аватар для FireFenix
FireFenix
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме:
3178262

Репутация: 389
По умолчанию

Упс, сотрел тока на линк авторизации
 
Ответить с цитированием

  #11045  
Старый 17.06.2009, 18:47
Аватар для geforse
geforse
Постоянный
Регистрация: 02.03.2008
Сообщений: 893
Провел на форуме:
5365841

Репутация: 712


Отправить сообщение для geforse с помощью ICQ
По умолчанию

Цитата:
Сообщение от d_x  
Что именно требуется? Получить контакт-лист?
Да
 
Ответить с цитированием

  #11046  
Старый 17.06.2009, 19:38
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Вроде бы есть класс для работы с mrim на php, у меня нет сейчас времени смотреть, как конкретно отсылаются пакеты. Возможно, легче реализовать получение контакт-листа не через веб-агент (описание протокола есть тут: http://agent.mail.ru/ru/developers/protocol.html).
 
Ответить с цитированием

  #11047  
Старый 17.06.2009, 19:54
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Например, можно тут (http://gibs0n.name/mainpage/view/article/Описание+протокола+Mail.Ru+аге нта) почитать
 
Ответить с цитированием

  #11048  
Старый 17.06.2009, 19:55
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Все-таки сделал
PHP код:
<?php
$login
='мыло';
$pass='пасс';
$pr='';$pp=''//адрес прокси и порт, если надо

$res=socket_do('win.mail.ru','/cgi-bin/loginagent','','GET','','',0,$pr,$pp);
preg_match_all('/Set-Cookie: (.+);/iUs',$res,$cook);
foreach(
$cook[1] as $ck)
{
  
$cookies[]=$ck;
}

$tmpcookie=implode('; ',array_unique($cookies));

$res=socket_do('koi.mail.ru','/cgi-bin/auth',"page=http%3A%2F%2Fwmrim.mail.ru%2Fwin%2Fcontactlist.html&FailPage=http%3A%2F%2Fwin.mail.ru%2Fcgi-bin%2Floginagent&post=&login_from=&Login=$login&Domain=$domain&Password=$pass&level=1&x=11&y=12",'POST',$tmpcookie,'http://win.mail.ru/cgi-bin/loginagent',0,$pr,$pp);

preg_match_all('/Set-Cookie: (.+);/iUs',$res,$cook);
foreach(
$cook[1] as $ck)
{
  
$cookies[]=$ck;
}

$cookies=implode('; ',array_unique($cookies));

preg_match("/Location: http:\/\/koi\.mail\.ru\/cgi\-bin\/checkcookie\?(.+)\r\n/iUs",$res,$m);

if(!isset(
$m[1]))
  die(
"Ошибка при входе.");

$res=socket_do('koi.mail.ru','/cgi-bin/checkcookie?'.$m[1],'','GET',$cookies,'http://win.mail.ru/cgi-bin/loginagent',0,$pr,$pp);
preg_match("/Location: (.+)\r\n/iUs",$res,$m);

if(!isset(
$m[1]))
  die(
"Ошибка при входе.");

$tmp=explode('/',$m[1],4);

$res=socket_do('wmrim.mail.ru','/'.$tmp[3],'','GET',$cookies,'http://win.mail.ru/cgi-bin/loginagent',0,$pr,$pp);

$sock=@socket_create(AF_INET,SOCK_STREAM,SOL_TCP);

if(!
$sock)
  die(
"Ошибка при создании сокета.");

if(
$pr)
{
  @
socket_connect($sock,$pr,$pp) or die("Ошибка при работе с сокетами.");
  
$request "POST http://wmrim.mail.ru/connect HTTP/1.0\r\n";
}
else
{
  
$mip=@gethostbyname('wmrim.mail.ru');
  @
socket_connect($sock,$mip,"80") or die("Ошибка при работе с сокетами.");
  
$request "POST /connect HTTP/1.0\r\n";
}

@
socket_set_nonblock($sock) or die("Ошибка при работе с сокетами.");
if(@
socket_select($r null$w = array($sock), $f null5)!=1)
  die(
"Ошибка при работе с сокетами.");

$request.= "Host: wmrim.mail.ru\r\n";
$request.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
$request.= "Referer: {$m[1]}\r\n";
$request.= "Content-Type: application/xml\r\n";
$request.= "Content-Length: ".strlen('status=1')."\r\n";
$request.= "Connection: keep-alive\r\n";
$request.= "Keep-alive: 300\r\n";
$request.= "Cookie: $cookies\r\n";
$request.= "\r\n";

@
socket_write($sock,$request.'status=1') or die("Ошибка при работе с сокетами.");

if(@
socket_select($r = array($sock), $w null$f null5)!=1)
  die(
"Ошибка при работе с сокетами.");

$ret=@socket_read($sock,1000) or die("Ошибка при работе с сокетами.");

if(
strpos($ret,"MRIM_CS_LOGIN_REJ, {reason:\"Invalid session\"}")!==false)
{
  @
socket_close($sock);
  die(
"Ошибка авторизации в mail-агенте.");
}

if(@
socket_select($r = array($sock), $w null$f null5)!=1)
  die(
"Ошибка при работе с сокетами.");

$ret=@socket_read($sock,100000) or die("Ошибка при работе с сокетами.");
print 
htmlspecialchars($ret); //вот отсюда брать контакт-лист
@socket_close($sock);
usleep($wt*1000);


function 
socket_do($page,$suri,$data,$method,$cook,$ref,$close=0,$pr='',$pp=0)
{
  if(
$pr)
  {
    
$request="$method http://$page$suri HTTP/1.0\r\n";
    
$fp=fsockopen("tcp://".$pr,$pp,$errno,$errstr,30);
  }
  else
  {
    
$request "$method $suri HTTP/1.0\r\n";
    
$fp=fsockopen('tcp://'.$page,80,$errorNumber,$errorString,30);
  }

  if(!
$fp) die("Ошибка при работе с сокетами.");

  @
stream_set_timeout($fp,30);

  
$request.= "Host: $page\r\n";
  
$request.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
  if(
$ref$request.= "Referer: $ref\r\n";

  if(
$method=='POST')
  {
    
$request.= "Content-Type: application/x-www-form-urlencoded\r\n";
    
$request.= "Content-Length: ".strlen($data)."\r\n";
  }

  
$request.= "Connection: close\r\n";

  if(
$cook)
    
$request.="Cookie: $cook\r\n";

  
$request.="\r\n";
  
$request.=$data;

  
fputs($fp,$request);
    
  
$res="";

  while(!
feof($fp))
  {
    
$res.=fgets($fp,128);
    if(
$close) break;
  }

  
fclose($fp);

  return 
$res;
}
?>
Из того, что в конце получает скрипт, несложно получить и контакт-лист.
PS. На денвере работать не будет.
 
Ответить с цитированием

  #11049  
Старый 17.06.2009, 22:50
Аватар для diznt
diznt
Постоянный
Регистрация: 31.01.2008
Сообщений: 643
Провел на форуме:
6128108

Репутация: 445


По умолчанию

У меня слишком много результатов вывода из Mysql
Я хотел бы их по страницам разбить (выводы)

Как это сделать?
 
Ответить с цитированием

  #11050  
Старый 17.06.2009, 22:55
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

http://alt-f4.ru/php-mysql-output-by-page
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ