Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: не могу получить страницу другого сайта через сокеты
 
 автор: parczynski   (21.02.2008 в 02:54)   письмо автору
 
 

Наварганил я значит вот такой вот код:

$s = fsockopen ('www.moyareklama.ru', 80); 
$data = "";
$length = strlen ($data); 
fwrite ($s, 
"POST / HTTP/1.0\r\n" . 
"Host: www.moyareklama.ru\r\n" . 
"Content-Type: application/x-www-form-urlencoded\r\n" . 
"Content-Length: $length\r\n" . 
"\r\n$data" 
);
$resp = ''; 
while (!feof($s)) $resp .= fgets ($s, 256); 
print $resp; 
fclose ($s);

Вроде все должно работать, по крайней мере если вписать адрес другого сайта то легко возвращается главная страница, но Моя Реклама все время возвращает

HTTP/1.1 400 Bad Request
Date: Wed, 20 Feb 2008 23:51:38 GMT
Server: Apache
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 472
Connection: close
Content-Type: text/html; charset=WINDOWS-125
Content-Language: ru

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html><head>
<meta HTTP-EQUIV="REFRESH" CONTENT="10; URL=/index.htm" target="_top">
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Ошибка!</title></head>
<body>
Извините, данная страница не существует.<br>
Для перехода к главной странице <a href =
"http://www.moyareklama.ru/index.htm" target="_top">
нажмите сюда</a>

вообщем что не так? заранее спасибо

да и еще
print 
  "<pre>" . 
  htmlspecialchars( 
    file_get_contents("http://www.moyareklama.ru/index.htm") 
    ) . 
  "</pre>";

выдает

Warning: file_get_contents(http://www.moyareklama.ru/index.htm) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in Z:\home\192.168.0.50\www\admin\reklama.php on line 27

   
 
 автор: jbs   (21.02.2008 в 04:04)   письмо автору
 
   для: parczynski   (21.02.2008 в 02:54)
 

представтесь серверу

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;)



З.Ы. не поленился, проверил.

   
 
 автор: parczynski   (22.02.2008 в 04:01)   письмо автору
 
   для: jbs   (21.02.2008 в 04:04)
 

2jbs
ОГРОМНОЕ спасибо, действительно теперь работает. и еще раз спасибо что не поленились :)

   
 
 автор: pаrczynsкi   (17.03.2008 в 16:49)   письмо автору
 
   для: parczynski   (22.02.2008 в 04:01)
 

Вообщем все некоторое время благополучно проработало, скрипт не менялся но сейчас опять выдается эта ошбика
HTTP/1.1 403 Forbidden Date: Mon, 17 Mar 2008 13:50:32 GMT Server: Apache Accept-Ranges: bytes Vary: Accept-Encoding Content-Length: 472 Connection: close Content-Type: text/html; charset=WINDOWS-125 Content-Language: ru Извините, данная страница не существует.
Для перехода к главной странице нажмите сюда



Скрипт сейчас выглядет вот так:

$s = fsockopen ('www.moyareklama.ru', 80);
$data = "page=1&city=11&sc=1&gr=1&sg=5&str=&countsel=0&x=74&y=17";
$length = strlen ($data);
fwrite ($s,
"POST /showads.php HTTP/1.0\r\n".
"Host: www.moyareklama.ru\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;)\r\n".
"Content-Length: $length\r\n".
"\r\n$data");
$resp = '';
while (!feof($s)) $resp .= fgets ($s, 256);
echo $resp;
fclose ($s);

В чем дело? что теперь не так? заранее спасибо!

   
 
 автор: Wunderbar   (17.03.2008 в 17:00)
 
   для: pаrczynsкi   (17.03.2008 в 16:49)
 

С большой вероятностью тебя забанили.

[поправлено модератором]

   
 
 автор: pаrczynsкi   (17.03.2008 в 17:09)   письмо автору
 
   для: Wunderbar   (17.03.2008 в 17:00)
 

IP адрес у нас статический и если залазить на сайт с оперы а не через apache - все равботает, да и вообще это газета - какая им разница? а может быть это из-за файрвола или еще чего? касперыч в конце концов?

А и вот чего еще если уж забанили и если по IP - как все это через прокси сделать не подскажите?

   
 
 автор: Adamant   (17.03.2008 в 17:10)   письмо автору
 
   для: Wunderbar   (17.03.2008 в 17:00)
 

Чтобы не заморачиваться, ставьте proxy в браузере.

   
 
 автор: pаrczynsкi   (17.03.2008 в 17:17)   письмо автору
 
   для: Adamant   (17.03.2008 в 17:10)
 

так ведь к серверу www.moyareklama.ru не браузер подключается а apache, установленный локально на моем компьютере

   
 
 автор: Wunderbar   (17.03.2008 в 17:22)
 
   для: pаrczynsкi   (17.03.2008 в 17:17)
 

Проверил твой код - и у меня Forbidden. Короче, они вроде тщательнее проверяют пользователя:

<?php
$headers 
= array (
  
'Accept' => 'application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1',
  
'Accept-Charset' => 'windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1',
  
'Accept-Language' => 'ru, en',
  
'Cache-Control' => 'no-cache',
  
'Connection' => 'Keep-Alive, TE',
  
'Cookie' => 'style_cookie=null',
  
'Cookie2' => '$Version=1',
  
'Host' => 'host',
  
'TE' => 'deflate, gzip, chunked, identity, trailers',
  
'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01',
);

$out '';

foreach(
$headers as $header => $val)
{
    
$out .= "$header$val\r\n";
}


$s fsockopen (''80); 
$data "page=1&city=11&sc=1&gr=1&sg=5&str=&countsel=0&x=74&y=17"

fwrite ($s
"GET /showads.php?$data HTTP/1.0\r\n"
"Host: \r\n"
$out .
"\r\n"); 
$resp ''
while (!
feof($s)) $resp .= fgets ($s256);
echo 
nl2br(htmlspecialchars($resp));
fclose ($s);
?>


Названия хостов (в заголовке Host: и аргумент функции fsockopen() затер, так как тут стоит антиспам для таких, как я.

Не понятно, зачем ты посылал POST'ом, когда там на сайте GET'ом по умолчанию

[поправлено модераторо]

   
 
 автор: pаrczynsкi   (17.03.2008 в 17:27)   письмо автору
 
   для: Wunderbar   (17.03.2008 в 17:22)
 

GET-ом открывается первая страница, на остальные POST. Но на сколько я понял :
1 разницы никакой, так?
2 после того как у меня все работало они кое-чего у себя переделали и расчитывать мне больше не на что, так?

   
 
 автор: Wunderbar   (17.03.2008 в 17:30)
 
   для: pаrczynsкi   (17.03.2008 в 17:27)
 

1. Похоже, что да.

2. Ты мой код посмотри. Я взял реальные заголовки одного браузера. У меня после страница нормально загрузилась, без 403-ей ошибки.

   
 
 автор: pаrczynsкi   (17.03.2008 в 18:17)   письмо автору
 
   для: Wunderbar   (17.03.2008 в 17:30)
 

ога, не правильно понял фразу "и у меня Forbidden", теперь работает. Большое спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования