Просмотр полной версии : Fsockopen
In.Exploit
07.01.2010, 13:00
Открываю я сокет с помощю
fsockopen()
Подключаюсь к сайту. Как проверить какой ответ отдаёт вервер?
Ну если статус 200! то продолжить.
или же сокет сам закрывается когда ответ приходит отличный от 200?
тогда
$fp = fsockopen()
if (!$fp) {
die("файла на удалённом сервере нет");
}
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
$errno, $errstr, http://ua2.php.net/fsockopen почитай полностью про функцию.
In.Exploit по секрету - с помощью ТОЛЬКО fsockopen - можно проверить ТОЛЬКО работоспособность порта на сервере. Как проверить наличие файла - вам отписали в предыдущем топике. Вы еще отмахнулись, мол, вам не нужен кот после !$fp
Заканчивайте плодить темы, для нубских вопросов - есть выделенный топик про пхп
fsockopen открывает только сокет. через сокет вдальнейшем можно передать инфу. чтобы узнать есть ли на удалённом сайте(соединение с которым ты открыл) файл, нужно отправить http - запрос к нему. тогда уже вернётся код(200/404/...) от сервера.
для этой цели имхо curl легче и лучше. там можно одни заголовки ловить.
получите и распишитесь. запросы и что делать с ответом думаю сами замените
if($s=fsockopen($proxy,$prprt))
//if($s=fsockopen("ui.bigmir.net",80))
{
$strp="GET http://ui.bigmir.net/gen/rnd/".$capt.".png HTTP/1.0
Accept: */*
Cookie: ".$cookie."
".$ua."
Referer: http://passport.bigmir.net/icq/
Host: ui.bigmir.net
Connection: Close\r\n\r\n";
fputs($s,$strp);
$out="";
while(!feof($s))
{
$out.=fgets($s,1024);
}
$pos=strpos($out,"\r\n\r\n");
$caca=trim(substr($out,$pos+1));
$fp=fopen("./cap.png","w");
fwrite($fp,$caca);
fclose($fp);
//echo $caca;
if (strstr("$caca","GIF89"))
{
$fp = fopen("./cap0.png", 'rb' );
fpassthru($fp);
@fclose($fp);
die();
}
$fp = fopen("./cap.png", 'rb' );
fpassthru($fp);
@fclose($fp);
}
else
{
if ($dev!=0) echo "Can't open socket to server in getIMG!";
die();
}
это из древнего реггера асек через бигмир, который я однажда починил и юзал втихаря :D
Вот несколько примеров получения Заголовков:
Sockets
<?php
$fp = @fsockopen("forum.antichat.ru", 80, $errno, $errstr, 3);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /bn/evapharmacy.gif HTTP/1.1\r\n";
$out .= "Host: forum.antichat.ru\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
@$data .= fread($fp, 1024*5);
}
fclose($fp);
list($headers, $body) = explode("\r\n\r\n", $data);
echo $headers;
}
?>
cURL
<?php
$ch = curl_init('http://2forum.antichat.ru/bn/evapharmacy.gif');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
$res = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
curl_close($ch);
if($errno > 0)
echo $errno.':'.$error;
else echo $res;
?>
get_headers
<?php
$headers = get_headers('http://forum.antichat.ru/bn/evapharmacy.gif');
foreach ($headers as $k => $v) {
echo '['.$k.'] => '.$v.'<br>';
}
?>
Pashkela
08.01.2010, 01:23
Простите, можно поинтересоваться, почему в этой строчке:
@$data .= fread($fp, 1024*5);
стоит собачка и 1024*5? Правда интересно
@$data .= fread($fp, 1024*5);
Как видиш дата дописывается а т.к. переменная небыла прежде создана пыха выдаст Нотайс.
1024*5
Привычка записи такая, почему именно по 5кб, моё оптимальное решение
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot