Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Имитация браузера-запрос методом post

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5

Открыть новую тему     Написать ответ в эту тему

NeveR_Mind



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Спасибо. После твоих разъяснений стало понятней! Но всё равно не получилось
Теперь мне выдается "1".
Вот мой скрипт:

Код:
 
<?php  
$vars = "&user=user&pass=pass&";  
$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL,'http://tachka:4080/fw/auth');  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);                                                                          
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");  
curl_setopt($ch, CURLOPT_TIMEOUT,40);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
$kuku=curl_exec ($ch);  
 
print_r(curl_getinfo($ch));    
echo "\n\ncURL error number:" .curl_errno($ch);    
echo "\n\ncURL error:" . curl_error($ch);    
 
curl_close ($ch);  
 
echo("<xmp>$kuku</xmp>");  
?>  
 
 
И вот что я получаю в результате:

Код:
 
Array ( [url] => http://tachka:4080/fw/auth [http_code] => 302 [header_size] => 99 [request_size] => 215 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.005 [namelookup_time] => 0 [connect_time] => 0.002 [pretransfer_time] => 0.003 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 0 [upload_content_length] => 0 [starttransfer_time] => 0.005 [redirect_time] => 0 ) cURL error number:0 cURL error:
 
1
 
 

(Единица - это значение $kuku, кода ошибки нет)
В чем же тут дело то?
 
Добавлено:
ВСё получилось! УРА!
Cheery, огромное спасибо! После твоих объяснений я всё понял. И edogs спасибо большое! Curl-м логиниться скрипт, а jscript логинит юзера.  
Cheery, ещё раз спасибо!  
 
Добавлено:
А теперь вот такой вопрос:
как все эти действия скрыть от пользователя?
Т.е. как бы сделать чтобы данные передавались от имени пользователя а результирующая страница в переменную записалась бы? такое возможно?

Всего записей: 264 | Зарегистр. 27-11-2002 | Отправлено: 18:58 24-05-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NeveR_Mind

Цитата:
А теперь вот такой вопрос:  
как все эти действия скрыть от пользователя?  
Т.е. как бы сделать чтобы данные передавались от имени пользователя а результирующая страница в переменную записалась бы? такое возможно?

Фактически Вам надо сделать проксик. Получили данные от юзера - их же послали на тот сервер. Получили в ответ данные сервера - показали их юзеру (подправили ссылки что бы они на Вас были). И т.д.

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 19:53 24-05-2006
NeveR_Mind



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
edogs

Цитата:
Фактически Вам надо сделать проксик. Получили данные от юзера - их же послали на тот сервер. Получили в ответ данные сервера - показали их юзеру (подправили ссылки что бы они на Вас были). И т.д.

Хмм...как только его делать непонятно....
Пока я просто открываю новую страницу, и сразу её закрываю...т.е. пользователь не замечает ничего..однако и ответ сервера проконтролировать нельзя... правильность ввода можно и ДО проверить..а вот если сервер допустим недоступен или какая ошибка - таким образом неузнать...
"прокси" - это конечно удобней...но как это сделать?
 
Добавлено:
причем curl использовать неполучается т.к. запрос идет с другого ip (сервера)...и соответсвенно другой результат приходит...

Всего записей: 264 | Зарегистр. 27-11-2002 | Отправлено: 20:13 24-05-2006
0x7d26a



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Немного изменил код

Код:
 
$ua->agent($usAgent);  
$ua->cookie_jar($Cookie);  
my $req = HTTP::Request->new(POST=>$url);
$req->referer($referrer);
$req->content_type('form-data');
$req->content('user' => '0x7d26a', 'pass' => 'pass', 'action'=> 'login', '1action' => 'GetByDomain', 'domain' => '....');
my $response = $ua->request($req);  
if ($response->is_success)  
{  
print "OK";  
$Cookie->extract_cookies($response);  
$Cookie->save($CookieFile);  
}  
else  
{  
print "FAIL( @{[$response->status_line()]})";  
}
 

создаётся файл куков но в нём тока: #LWP-Cookies-1.0

Всего записей: 125 | Зарегистр. 05-11-2005 | Отправлено: 20:50 24-05-2006 | Исправлено: 0x7d26a, 20:51 24-05-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NeveR_Mind
Если ответ сервера зависит в т.ч. от ИП, и существенно, то никак не выкрутитесь. Если только клиентские приложения запускать. Хотя. Вот. Подумайте ещё о флэше. На флэш можно написать интерфейсик который данные куда надо пошлет, получит ответ, и пошлет уже в другое место + совместить с курлом и вуаля.
P.S.: А зачем это?

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 22:52 24-05-2006
NeveR_Mind



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
edogsПонятно. так я и думал.... в принципе я обошелся способом как ты написал, за что ещё раз спасибо ...
А нужно было для того, что есть моя собственная система и другая(не моя). чтобы два раза пользователю не приходилось авторизовываться в разных системах..я сделал авторизацию во второй системе из моей автоматом...причем это всё в локальной сети и там играет роль ip...объяснять долго..но ты мне помог..всё получилось. сенкс дальше уже вопрос простого интереса....

Всего записей: 264 | Зарегистр. 27-11-2002 | Отправлено: 20:25 25-05-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
0x7d26a

Цитата:
создаётся файл куков но в нём тока: #LWP-Cookies-1.0

ну.. а вообще куки передаются от сервера? может потому и пустой файл, что их нет?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:27 25-05-2006
0x7d26a



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
ну.. а вообще куки передаются от сервера? может потому и пустой файл, что их нет?

Точно передаются, т.к. после авторизации осёл ИЕ нормально их записывает.
Пробовал вывести контент в файл (print OUT $response->content;) результат: "Error: no action"  
Не знаю что и делать
 
Добавлено:
пробовал перейти ослом ИЕ по адресу domain/cgi-bin/login.cgi - результат: "Error: no action"
 
Добавлено:
Cheery
Я всё-таки доковырял скрипт
Попробовал переписать строку так:

Код:
$req->content("user=0x7d26a&pass=passwd&action=login&1action=GetByDomain&domain=....");

 
И получил заветный файл куков

Цитата:
#LWP-Cookies-1.0
Set-Cookie3: pass=passwd; path="/"; domain=domain; path_spec; expires="2006-06-01 17:52:11Z"; version=0
Set-Cookie3: user=0x7d26a; path="/"; domain=domain; path_spec; expires="2006-06-01 17:52:11Z"; version=0


Всего записей: 125 | Зарегистр. 05-11-2005 | Отправлено: 21:20 25-05-2006 | Исправлено: 0x7d26a, 22:06 25-05-2006
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
0x7d26a
Посмею ответить не прочитав большинство ответов в теме. Если проблема заключается в симуляции пользователя. То я думаю вам смогу помочь. У меня есть несколько примеров которые показывают как работать с серваком, как передавать данные методом POST, как сохранять куку и т.д. Для всех примеров вам понадобиться библиотека curl которая установлена на большинстве хостингов. Если curl вас устраивает то опишу мои примеры.
 
Добавлено:
Сори вижу проблема уже решена

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 00:12 26-05-2006
Oleg_Tarusov



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот я некоторый класс на PHP написал, он пока не полностью дописан, поэтому я его в полезные решения не пихаю.
Файл form.php, где лежит класс
Подробнее...
Использование:

Код:
<?php
     require ('form.php');
     $form = new Form();
     $form->connect("www.site2.ru");
     $form->setHost("www.site2.ru");
     $form->addPOSTData("a=oleg");
     $form->addPOSTData("b=tarusov");
     $form->setReferer("Google.com");
     $form->send('forma.php');
     $form->echoGet();
     $form->echoPage();
     $form->disconnect();
?>

Всего записей: 175 | Зарегистр. 25-02-2006 | Отправлено: 01:02 27-05-2006 | Исправлено: Oleg_Tarusov, 01:04 27-05-2006
NeveR_Mind



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
[b]Delphi6[b]
Приводи примеры, не стесняйся

Всего записей: 264 | Зарегистр. 27-11-2002 | Отправлено: 20:28 30-05-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сюда же
PHP: POST-запрос на https


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:37 10-01-2008
grikdotnet

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я выложил класс-обертку для cURL на PHP:
http://www.phpclasses.org/browse/package/4322.html
Там в примерах есть и POST, и Cookies, a SSL (HTTPS) сам cURL обрабатывает

Всего записей: 1 | Зарегистр. 30-05-2007 | Отправлено: 01:46 11-01-2008 | Исправлено: grikdotnet, 01:47 11-01-2008
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
КОД
<?php
$vars = "?id=6daa21097987831ec36260d9a6aa47f1&action=add&UserName=HappyNewYear&UserMessage=Happy+New+Year&m=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://gelanie.com/elka.php');
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);  
                                                                             
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");  
curl_setopt($ch, CURLOPT_TIMEOUT,40);
// запишем ответ в переменную
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$kuku=curl_exec ($ch);
curl_close ($ch);
 
  echo("<xmp>$kuku</xmp>");
?>
 
 
Работает код)
 
 
 
Рабочий код...
 
<?php  
$vars = "&id=6daa21097987831ec36260d9a6aa47f1&action=add&UserName=HappyNewYear&UserMessage=Happy+New+Year&m=1&";  
$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL,'http://gelanie.com/elka.php');  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);                                                                          
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");  
curl_setopt($ch, CURLOPT_TIMEOUT,40);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
$kuku=curl_exec ($ch);  
 
print_r(curl_getinfo($ch));    
echo "\n\ncURL error number:" .curl_errno($ch);    
echo "\n\ncURL error:" . curl_error($ch);    
 
curl_close ($ch);  
 
echo("<xmp>$kuku</xmp>");  
?>  
 
 
 
Вопрос снят.
Спасибо Cheery за помощь)

Всего записей: 526 | Зарегистр. 11-12-2004 | Отправлено: 00:02 25-12-2008 | Исправлено: ForposT_ForeveR, 21:42 25-12-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ForposT_ForeveR

Цитата:
Не работает код)
 
 
Ещё один нерабочий код...  

не слишком ли резкие заявления? может у кого то просто руки кривые?  
если вы не посылаете все данные из формы, то и нет гарантии, что работает.
смотрим как и что передается.. значения из формы - через POST.. а вот add и так далее - через GET

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:36 25-12-2008
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
может у кого то просто руки кривые?  

 
Абсолютно с Вами согласен)
 

Цитата:
смотрим как и что передается.. значения из формы - через POST.. а вот add и так далее - через GET

 
Спасибо, всё работает)

Всего записей: 526 | Зарегистр. 11-12-2004 | Отправлено: 20:22 25-12-2008
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте, ещё раз)
Как осуществить имитацию загрузки файла.

Код:
 
<form action="http://server2.ru/test.php" name="go" method="post" enctype="multipart/form-data" target="_blank">
<input type=file ...>
 </form>  
 

 
Файл, который надо отправлять скрипту, находится на сервере.
Спасибо

Всего записей: 526 | Зарегистр. 11-12-2004 | Отправлено: 03:29 08-01-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ForposT_ForeveR
http://w-shadow.com/blog/2007/10/08/how-to-really-upload-files-with-php/

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:57 08-01-2009
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте.
Подскажите пожалуйста, что и куда надо передавать, чтобы через РНР можно было запустить форму. ( __http://www.multitamil.com/tamilnet/index.php )
Заранее огромнейшее спасибо.

Всего записей: 526 | Зарегистр. 11-12-2004 | Отправлено: 00:38 26-03-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ForposT_ForeveR

Цитата:
Подскажите пожалуйста, что и куда надо передават

поставьте примочку Live HTTP headers для FF и изучайте

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:46 26-03-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5

Компьютерный форум Ru.Board » Интернет » Web-программирование » Имитация браузера-запрос методом post


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru