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

Форум PHP

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

 

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

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

тема: обратится как браузер к интернету через прокси сервер
 
 автор: himic   (02.06.2006 в 09:30)   письмо автору
 
 

обратится как браузер к интернету через прокси сервер
почитал форум и сделал так


fp = @fsockopen("tcp://192.168.10.2", 8080, $errno, $errstr, 10); 
     if (!$fp) { 
         return false; 
     } else { 
         $out  = "GET http://www.lme.co.uk/dataprices_daily_metal.asp HTTP/1.1\r\n"; 
         $out .= "Host: lme.co.uk\r\n"; 
         $out .= "Referer: lme.co.uk\r\n"; 
         $out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"; 
         $out .= "Connection: Close\r\n"; 
         $out .= "\r\n"; 

         fwrite($fp, $out); 
         if($get) 
         { 
             while (!feof($fp)) { 
                 $buffer .= fgets($fp, 1024);                  
             } 
         } 
         fclose($fp); 
     } 
     echo  $buffer;


но говорит таймаут вышел
и если можно разъясните мне что означает
GET - куда посылать запрос?
Host:
Referer

   
 
 автор: cheops   (02.06.2006 в 12:10)   письмо автору
 
   для: himic   (02.06.2006 в 09:30)
 

"tcp://192.168.10.2" - тут нужен только IP-адрес "192.168.10.2" - порт вы указываете вторым параметром, поэтому схема "tcp://" не нужна.
Строку
<?php
  $out  
"GET http://www.lme.co.uk/dataprices_daily_metal.asp HTTP/1.1\r\n";
?>

следует исправить на
<?php
  $out  
"GET /dataprices_daily_metal.asp HTTP/1.1\r\n";
?>

   
 
 автор: mihdan   (02.06.2006 в 12:13)   письмо автору
 
   для: himic   (02.06.2006 в 09:30)
 


<?
fp 
= @fsockopen("tcp://192.168.10.2"8080$errno$errstr10);
?>


Вместо 10 поставь поболее и будет тайм айт больше

   
 
 автор: himic   (02.06.2006 в 13:22)   письмо автору
 
   для: mihdan   (02.06.2006 в 12:13)
 

Спасибо мужики!!!!!!!!!!
Достучался я до прокси сервера дал он мне ответ
но проблема, он то по идее должен спрашивать авторизацию, а он не может её запросить и выводит


    
Network Access Message: The page cannot be displayed     
Explanation: There is a problem with the page you are trying to reach and it cannot be displayed. 

Try the following: 
Refresh page: Search for the page again by clicking the Refresh button. The timeout may have occurred due to Internet congestion. 
Check spelling: Check that you typed the Web page address correctly. The address may have been mistyped. 
Access from a link: If there is a link to the page you are looking for, try accessing the page from that link. 
If you are still not able to view the requested page, try contacting your administrator or Helpdesk. 
    
Technical Information (for support personnel) 
Error Code: 502 Proxy Error. The Uniform Resource Locator (URL) does not use a recognized protocol. Either the protocol is not supported or the request was not typed correctly. Confirm that a valid protocol is in use (for example, HTTP for a Web request). (12006) 
IP Address: 192.168.10.2 
Date: 10/3/2005 9:11:13 AM 
Server: lead.kz 
Source: proxy


Я уверен что как то можно спросить авторизацию
браузер же посылает данные авторизации

   
 
 автор: XPraptor   (02.06.2006 в 15:30)   письмо автору
 
   для: himic   (02.06.2006 в 13:22)
 

Я тут уже приводил пример авторизации на сокетах, как прокси, так и Basic на сайте.
Во первых верни в строку GET полный URL прокси некоторые не смогут по директиве host определить правильно страницу.
Во вторых, авторизация прокси идет предпоследней строкой, а авторизация Basic идет последней строкой (если нет POST данных при методе POST).


$out .= "Proxy-Authorization: Basic " . base64_encode("LoginTvoy:PasswordTvoy") . "\r\n";
$out .= "Authorization: Basic " . base64_encode("LoginTvoy:PasswordTvoy") . "\r\n";
$out .= "\r\n";

   
 
 автор: himic   (05.06.2006 в 06:57)   письмо автору
 
   для: XPraptor   (02.06.2006 в 15:30)
 

Вы сказали что авторизация должна происходить предпоследней строкой
это значит после строки идентификации браузера
сделал
выдаёт

1HTTP/1.1 502 Proxy Error ( The Uniform Resource Locator (URL) does not use a recognized protocol. Either the protocol is not supported or the request was not typed correctly. Confirm that a valid protocol is in use (for example, HTTP for a Web request). ) Via: 1.1 WWW Connection: close Proxy-Connection: close Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Content-Length: 4203

   
 
 автор: cheops   (05.06.2006 в 09:49)   письмо автору
 
   для: himic   (05.06.2006 в 06:57)
 

А как сейчас у вас выглядит скрипт?

   
 
 автор: himic   (05.06.2006 в 10:31)   письмо автору
 
   для: cheops   (05.06.2006 в 09:49)
 

<?
$fp 
= @fsockopen("192.168.10.2"8080$errno$errstr30); 
        
 
$out  "GET lme.co.uk/dataprices_daily_metal.asp HTTP/1.1\r\n"
$out .= "Host: lme.co.uk\r\n"
$out .= "Referer: lme.co.uk\r\n";  
$out .= "Authorization: Basic ".base64_encode("ant:пароль") . "\r\n";
//$out .= "Proxy-Authorization: Basic " . base64_encode("ant:пароль") . "\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"
$out .= "Connection: Close\r\n"
$out .= "\r\n"


         
fwrite($fp$out); 
         if(
$get
         { 
             while (!
feof($fp)) { 
                 
$buffer .= fgets($fp1024);                  
             } 
         } 
         
fclose($fp); 
     } 
    echo 
$buffer
?>

   
 
 автор: cheops   (05.06.2006 в 10:46)   письмо автору
 
   для: himic   (05.06.2006 в 10:31)
 

Не нужно указывать имя хоста lme.co.uk в параметре GET - он принимает путь от корня хоста
<? 
$fp 
= @fsockopen("192.168.10.2"8080$errno$errstr30); 
         
$out  "GET /dataprices_daily_metal.asp HTTP/1.1\r\n"
$out .= "Host: lme.co.uk\r\n"
$out .= "Referer: lme.co.uk\r\n";   
$out .= "Authorization: Basic ".base64_encode("ant:пароль") . "\r\n"
//$out .= "Proxy-Authorization: Basic " . base64_encode("ant:пароль") . "\r\n"; 
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"
$out .= "Connection: Close\r\n"
$out .= "\r\n"


         
fwrite($fp$out); 
         if(
$get
         { 
             while (!
feof($fp)) { 
                 
$buffer .= fgets($fp1024);                   
             } 
         } 
         
fclose($fp); 
     } 
    echo 
$buffer
?>

   
 
 автор: himic   (05.06.2006 в 10:58)   письмо автору
 
   для: cheops   (05.06.2006 в 10:46)
 

а у меня по-разному было
поставил как ты говоришь, всё также

меня вот эта строка в ошибке смущает

Proxy Error ( The Uniform Resource Locator (URL)

   
 
 автор: cheops   (05.06.2006 в 12:44)   письмо автору
 
   для: himic   (05.06.2006 в 10:58)
 

Хм... попробуйте ещё заменить HTTP 1.1 на HTTP 1.0 - многие прокси не поддерживают более новую версию протокола... хотя вряд ли в этом дело... А через браузер этот прокси нормально работает?

   
 
 автор: XPraptor   (05.06.2006 в 14:11)   письмо автору
 
   для: cheops   (05.06.2006 в 12:44)
 

Химик, кончай издеваться. Делай как я сказал. Полный путь вместе с http в первой строке (какой протокол будет прокси использовать для запроса твоей страницы, если ты не указал его) строки автоизации прокси предпоследняя, авторизация обычная последняя и после нее двойной первод строки. Как сказал cheops, на всякий случай протокол HTTP/1.0 прокси действительно может не поддерживать 1.1 или в браузере галочка не стоять "использовать для прокси HTTP/1.1"

   
 
 автор: himic   (06.06.2006 в 07:39)   письмо автору
 
   для: XPraptor   (05.06.2006 в 14:11)
 

И такую и другую авторизацию пробовал

выдаёт

1HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied. ) Via: 1.1 WWW Proxy-Authenticate: Negotiate Proxy-Authenticate: Kerberos Proxy-Authenticate: NTLM Connection: Keep-Alive Proxy-Connection: Keep-Alive Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Content-Length: 4099 

   
 
 автор: cheops   (06.06.2006 в 11:16)   письмо автору
 
   для: himic   (06.06.2006 в 07:39)
 

Так у вас прокси авторизации требует? Т.е. не свободного доступа?

   
 
 автор: himic   (06.06.2006 в 15:03)   письмо автору
 
   для: cheops   (06.06.2006 в 11:16)
 

Так точно! ИСОЙ зовётся
если из браузера обращаешься, то вылазиет авторизация
а для аськи устанавливаем Starts Firewall Client Management for ISA Server

   
 
 автор: cheops   (06.06.2006 в 19:34)   письмо автору
 
   для: himic   (06.06.2006 в 15:03)
 

Авторизация базовая?

   
 
 автор: himic   (07.06.2006 в 08:20)   письмо автору
 
   для: cheops   (06.06.2006 в 19:34)
 

роворят базовая, а какая нужна?

Почитал я тут http://www.internetaccessmonitor.ru/rus/support/docs/isaserver/FW_AuthenticationOver.php

Таким образом, когда клиент запрашивает данные по протоколу HTTP, идентификационная информация не передается на сервер ISA Server до тех пор, пока ISA Server не запросит ее. Это происходит, когда брандмауэр может разрешить доступ только после идентификации пользователя.

Такие запросы обрабатываются сервером ISA Server как поступившие от неидентифицированного пользователя. Если ISA Server не может передавать запросы от неидентифицированных пользователей, такой запрос будет отклонен, потому что ISA Server не потребует идентификации.

   
 
 автор: cheops   (07.06.2006 в 11:53)   письмо автору
 
   для: himic   (07.06.2006 в 08:20)
 

Как она внешне выглядит? Окошко вылазит поверх страницы?

   
 
 автор: himic   (07.06.2006 в 12:05)   письмо автору
 
   для: cheops   (07.06.2006 в 11:53)
 

Так точно, при попытку обратится к интернету
вылазит окошко на авторизацию

   
 
 автор: cheops   (07.06.2006 в 12:29)   письмо автору
 
   для: himic   (07.06.2006 в 12:05)
 

Посмотрите тему по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=7336.

   
 
 автор: XPraptor   (07.06.2006 в 16:52)   письмо автору
 
   для: cheops   (07.06.2006 в 12:29)
 

Не, раз на ISA запрещена авторизация другими пользователями, то нужно именно сначала авторизироваться как пользователь windows, а потом уже авторизацию проксе посылать.

Такс, тут проблемка у нас возникла. Не знаю я как на PHP послать авторизацию пользователя windows. На VB или C++ легко авторизируюсь, а вот через PHP - надо подумать как заюзать COM объекты винды для kerberos.

Надо мануал на php.net порыть, вроде видел я там функции по авторизации в винде.

   
 
 автор: himic   (08.06.2006 в 07:09)   письмо автору
 
   для: XPraptor   (07.06.2006 в 16:52)
 

Блин братва, как я вым благодарен, особенно за помощь с авторизацией
если бы не вы то пришлось все цены с LME забивать вручную

а теперь вот полюбуйтесь! как к вашему сайту обращается :) http://lead.kz/tpl/proxy.php
Ура товарищи! По этой теме бы статейку чиркануть

   
Rambler's Top100
вверх

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