| |
|
|
| | Здравствуйте!
Во-первых, хочу поблагодарить авторов М.Кузнецова и И.Симдянова за прекрасную книгу Самоучитель PHP5. Я ее купил два года назад, и нисколько не жалею. Очень хорошая книга, написана очень доступно для начинающего. Я теперь скрипты пишу на свой сайт. Только своими пользуюсь!
Я видел у вас тему о подделке cookies и сессий http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050, но я не понял как в ней написать сообщение. Поэтому извините, если эта тема лишний раз написана. У меня такая проблема. Я хочу написать скрипт, который будет постоянно (с помощью Cron) заходить на сайт знакомств. Вообщем, я хочу, чтобы скрипт за меня присутствовал на сайте. Я написал следующий код:
<?php
$hostname = "mamba.ru";
$path = "/";
// Устанавливаем соединение, имя которого
// передано в параметре $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем HTTP-заголовки для передачи
// его серверу
$headers = "GET $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Connection: Close\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers);
// Получаем ответ
while (!feof($fp))
{
$line = fgets($fp, 1024);
// Ищем строку вида
// Set-Cookie: PHPSESSID=6197e647566bdaa24da3ab42ae7604b2;
// Именно она устанавливает cookie
preg_match("|Set-Cookie: s=([\d\w]+);|i",$line,$out);
if(!empty($out[1]))
{
$SID = $out[1];
break;
}
}
fclose($fp);
}
$hostname = "mamba.ru";
$path = "/my/login.phtml";
$line = "";
// Передаём методом POST имя пользователя (admin),
// его пароль (admin), скрытое поле session_id ($SID)
// В заголовках, передаём cookie PHPSESSID
// Устанавливаем соединение, имя которого
// передано в параметре $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Данные POST-запроса
//$data = "name=admin&pass=admin&session_id=$SID&\r\n\r\n";
$data = "oid=0&photo_oid=0&login_action=login&tcurl=&login=мой_логин&password=мой_пароль&session_id=$SID";
// Формируем HTTP-заголовки для передачи
// его серверу
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n";
// Подделываем cookie
$headers .= "Cookie: PHPSESSID=$SID;\r\n";
$headers .= "Connection: Close\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
|
Но у меня он не авторизируется.
Я проанализировал как происходит вход на свою страничку.
Сначала я захожу на mamba.ru/tips/?tip=Login
Формируется идентификатор сессии s
Далее, если я использую полученный идентификатор, то введя адрес
http://mamba.ru/my/login.phtml?oid=0&photo_oid=0&login_action=login&tcurl=&login=мой_логин&password=мой_пароль&session_id=7Z85gucdkBY43GH7EoW_fID.1062mbbl
я попадаю на свою страничку. При этом я заметил появляется cookie LOGIN c value=мой_логин
На почту Cron присылает следующее письмо:
HTTP/1.1 302
Server: nginx/0.5.10
Date: Mon, 28 Jan 2008 00:19:27 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
P3P: policyref="http://www.mamba.ru/w3c/p3p.xml", CP="NOI DSP COR NID ADM DEV PSA OUR IND UNI PUR COM NAV INT STA"
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Mon, 28 Jan 2008 00:19:27 GMT
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Cache-control: private
Set-Cookie: s=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN; path=/; domain=.mamba.ru
Set-Cookie: UID=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: SECRET=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: LEVEL=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: LOGIN=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: UID=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: SECRET=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: TIMEZONE=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: UID=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: SECRET=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Set-Cookie: LEVEL=deleted; expires=Sun, 28 Jan 2007 00:19:26 GMT; path=/; domain=.mamba.ru
Location: http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN
1eb
<html>
<head>
<title>Status 302 - документ перемещен</title>
</head>
<body bgcolor=#ffffff text=#000000 link=#ff0000 alink=#ff0000 vlink=#ff0000>
<script language="JavaScript">
<!--
window.location.href='http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN';
//-->
</script>
Документ перемещен: <a href="http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN">http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN</a><br><br>
</body>
</html>
0
|
Я не знаю в чем дело. Я с этим не оченб дружу. Помогите, пожалуйста.
Заранее спасибо! | |
| |
|
|
| |
|
|
| |
для: osandr
(28.01.2008 в 03:35)
| | | Кусок авторегера на мамбе:
<?php
function get_img($cookies, $s)
{
for($i = 0;$i < 10; $i++)
{
$r = curl_get_img("http://mamba.ru/my/reg.phtml?image=1&sold=$s", $cookies, "", "", "");
$fp = fopen($i.".jpg","w+");
fputs($fp, $r);
$i + 1;
}
}
function get_reg_page()
{
$r = curl_get("http://mamba.ru/my/reg.phtml?1=1&set_cookies=no","","http://mamba.ru/my/reg.phtml","","");
$fp = fopen("1.txt","w+");
fputs($fp,$r);
$r = explode("|||",$r);
return $r[1];
}
function do_reg($cookies, $code)
{
global $name;
global $dlogin;
global $login;
global $mail;
$query = "SELECT * FROM `options` LIMIT 1";
$result = query($query);
$row = mysql_fetch_array($result);
$pass = htmlspecialchars($row['pass']);
$fp = file('data/city.txt');
$city = $fp[rand(0,(count($fp)-1))];
if($_POST['sex'] == 'm') $sex = "M";
if($_POST['sex'] == 'f') $sex = "F";
if($_POST['birth'] == '2') $birth = rand(date("Y",time())-20,date("Y",time())-18);
if($_POST['birth'] == '3') $birth = rand(date("Y",time())-25,date("Y",time())-20);
if($_POST['birth'] == '4') $birth = rand(date("Y",time())-30,date("Y",time())-25);
if($_POST['birth'] == '5') $birth = rand(date("Y",time())-40,date("Y",time())-30);
if($_POST['birth'] == '6') $birth = rand(date("Y",time())-50,date("Y",time())-40);
if($_POST['birth'] == '7') $birth = rand(date("Y",time())-80,date("Y",time())-50);
$r = curl_get("http://mamba.ru/my/reg.phtml", $cookies, "http://mamba.ru/my/reg.phtml","action=post&tcurl=&noerror=0&login=$login&genpass=0&password1=$pass&textpassword1=&password2=$pass&textpassword2=&email=$mail&name=$name&gender=$sex&birthday=".rand(10,20)."&birthmonth=0".rand(10,12)."&birthyear=".$birth."&city=$city&zipcode=&lookfor%5Bm%5D=on&check=$code&condition_accepted=1","");
$fp = fopen("3.txt","w+");
fputs($fp, $r);
if(strpos($r,'reg.phtml?image=1') == 0)
{
$query = "INSERT INTO `users` VALUES (NULL, '".clear($login)."', '".clear($pass)."')";
$result = mysql_query($query);
if($result)
{
echo $login."<br/>";
}
}
else
{
echo "False<br/>";
}
}
function curl_get($url, $cookies, $ref, $post, $proxy)
{
$cr = curl_init($url);
curl_setopt($cr, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_setopt($cr, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cr, CURLOPT_REFERER, $ref);
curl_setopt($cr, CURLOPT_HEADER, 1);
curl_setopt($cr, CURLOPT_TIMEOUT, 50);
curl_setopt($cr, CURLOPT_COOKIE, $cookies);
curl_setopt($cr, CURLOPT_PROXY, "");
curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, 0);
if($post <> "")
{
curl_setopt($cr, CURLOPT_POST, 1);
curl_setopt($cr, CURLOPT_POSTFIELDS, $post);
}
$r = curl_exec($cr);
if(curl_error($cr))
{
return "error";
exit;
}
curl_close($cr);
$cookies = "";
$cook = explode("Set-Cookie:",$r);
if(count($cook) <> 1)
for($i=1;$i<count($cook);$i++)
$cookies.=SubStR($cook[$i],0,StrPos($cook[$i],";")+1);
//$r = str_replace('</td><td><img align="left" src="', '</td><td><img align="left" src="1.jpg', $r);
return $r."|||".$cookies;
}
function curl_get_img($url,$cookies,$ref,$post,$proxy)
{
$cr = curl_init($url);
curl_setopt($cr, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_setopt($cr, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cr, CURLOPT_REFERER, $ref);
// curl_setopt($cr, CURLOPT_HEADER, 1);
curl_setopt($cr, CURLOPT_TIMEOUT, 150);
curl_setopt($cr, CURLOPT_COOKIE, $cookies);
curl_setopt($cr, CURLOPT_PROXY, "");
curl_setopt($cr, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cr, CURLOPT_SSL_VERIFYHOST, 0);
if($post <> "")
{
curl_setopt($cr, CURLOPT_POST, 1);
curl_setopt($cr, CURLOPT_POSTFIELDS, $post);
}
$r = curl_exec($cr);
if (curl_error($cr))
{
return "error";
exit;
}
curl_close($cr);
$cookies = "";
$cook = explode("Set-Cookie:",$r);
if(count($cook) <> 1)
for ($i = 1;$i < count($cook); $i++)
$cookies .= substr($cook[$i],0,strpos($cook[$i],";")+1);
return $r;
}
?>
|
<?php
$cookies = get_reg_page();
$s = substr($cookies,0,strpos($cookies,';'));
$s = substr($s,strpos($s,'=')+1,strlen($s));
?>
|
| |
| |
|
|
| |
|
|
| |
для: SnooPI
(28.01.2008 в 04:15)
| | | Спасибо! Сейчас посмотрю. | |
| |
|
|
| |
|
|
| |
для: osandr
(28.01.2008 в 15:22)
| | | Честно говоря, не очень понял какие переменные нужно передавать и какому скрипту. Скрипту reg.php ? | |
| |
|
|
| |
|
|
| |
для: osandr
(30.01.2008 в 02:01)
| | | Мне нужно, чтобы скрипт авторизировался, а не регистрировался на сайте. | |
| |
|
|
| |
|
|
| |
для: osandr
(06.02.2008 в 00:25)
| | | Людиииии!!!!
Здесь есть кто-нибудь? Скажите что-нибудь....
Я пытался также с помощью скрипта заходить http://mamba.ru/my/access.phtml?oid=xxxxxxx&secret=xxxxxx&goto=newmessages. Ситуация похожая. Скрипт на мамбе пытается перекинуть меня на страницу http://mamba.ru/my/redirect.phtml?goto=newmessages&sold=vu2xNrI6ojkerSIeOHrsdTzhqEs8aajS
Я пытаюсь в своем скрипте перейти на эту страницу с полученными ранише cookie, но меня выбрасывает на страницу входа.
Вот и выше похожая ситуация:
Location: http://mamba.ru/my/?sold=vpaIlG0lxZQWmCi8NvcRV0fyc0Pb6tsN
Подскажите как мне перейти на эту страницу программно.
Везде я указывал referer. | |
| |
|
|
| |
|
|
| |
для: osandr
(09.02.2008 в 04:32)
| | | Огромное всем спасибо!!! Я раньше ничего не знал про функции CURL :) Сегодня только понял. | |
| |
|
|
|