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

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

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

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

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

webdeveloper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать запрос к отдалённому серверу, но только используя метод post передать определенные значения. Нужен пример на Perl или Php
 
Добавлено
Зы, подчёкриваю ПОСТ,библиотека LWP в perl или fopen в PHP тут врядли помогут

Всего записей: 1373 | Зарегистр. 30-05-2002 | Отправлено: 21:27 04-12-2002 | Исправлено: webdeveloper, 21:45 04-12-2002
Vinsent_Vega

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webdeveloper
LWP вполне позволяет делать пост. Она и предназначена для эмуляции клиента пользователя (браузера). А на ПХП такое сделать проблематично сильно.

Всего записей: 1446 | Зарегистр. 15-10-2002 | Отправлено: 22:12 04-12-2002
Zuga_Zuga

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

Цитата:
А на ПХП такое сделать проблематично сильно.

Просто надо знать волшебное слово, все делается без особых проблем. Благо классов уже понаписанно достаточно.  
Так что 3 строки - и вы в посте

Всего записей: 92 | Зарегистр. 03-10-2002 | Отправлено: 22:29 04-12-2002
webdeveloper



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

Цитата:
LWP вполне позволяет делать пост

Спасибо, нашол,если кому надо вот код:

Код:
 
#!/usr/bin/perl -w
 
use LWP::UserAgent;
use strict;
 
my $content = "file=codehttp.xml";      
my $header  = new HTTP::Headers(      
   Content_Type => 'application/x-www-form-urlencoded',
                                       );
 
my $ua = new LWP::UserAgent;            
my $request = new HTTP::Request(        
   POST => 'http://www.perlhelp.de/',    );  
 
my $response = $ua->request($request);                                      
print $response->as_string;        
 

 
Добавлено
Zuga_Zuga

Цитата:
Так что 3 строки - и вы в посте

А подробней?

Всего записей: 1373 | Зарегистр. 30-05-2002 | Отправлено: 22:30 04-12-2002 | Исправлено: webdeveloper, 22:32 04-12-2002
lucky



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webdeveloper
если тебе все еще интересно про LWP почитать (на русском) посмотри новость от 14 февраля 2001

----------
я буйный, но прикидываюсь тихим
ага.... и фигачу свой старый проектег Лунная База

Всего записей: 675 | Зарегистр. 10-04-2002 | Отправлено: 11:34 05-12-2002
webdeveloper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lucky
Спасибо  
По LWP есть доки на cpan, на ридном английском языке

Всего записей: 1373 | Зарегистр. 30-05-2002 | Отправлено: 13:35 05-12-2002
hamshen

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

Цитата:
А подробней?

 
http://pear.php.net/package-info.php?pacid=33
http://phpclub.mirrors.phpclasses.org/search.html?words=http+post&restrict=&method=and&sort=score&go_search=1&page=1

----------
Хорошие умирают молодыми, но плохие умирают уродливо.

Всего записей: 614 | Зарегистр. 22-04-2002 | Отправлено: 16:17 05-12-2002 | Исправлено: hamshen, 16:23 05-12-2002
Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А чем fsockopen(); проблематичного PHP не устраивает?

----------
Если вы спорите с идиотом,
Наверняка, он занимается тем же самым.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 04:34 06-12-2002
Slippery



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
самый простой и надежный способ имитировать браузер - это использовать библиотеку СURL:

Код:
 
<?php
$vars = "&Chtoto=chemuto&Chtoto=chemuto&Chtoto=chemuto&Chtoto=chemuto&Chtoto=chemuto&";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://Kuda nado poslat'');
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);  
// пусть думают что наш скрипт - это Эксплорер 5                                                                                
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>");
?>
 


----------
... - говорите, говорите, я всегда зеваю, когда мне интересно!
---
халявный генератор анимации на мобилу

Всего записей: 326 | Зарегистр. 31-10-2002 | Отправлено: 18:19 08-12-2002
plokijuh30000



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть известные способы передачи PHP-переменных на какой-нидь хост:
1. <form ...  
2. header(Location: http://host.com/ind.php?var1=1&var2=2);
3. curl
4. fsockopen() - fputs()
А можно ли методом POST (чтобы в строке браузера линк был не http://host.com/ind.php?var1=1&var2=2 , а просто http://host.com) отправить PHP-vars на какой-нидь хост с помощью функции header()
PS: я пропарился - пока не получилось. Возможно ли енто вообще???

Всего записей: 33 | Зарегистр. 28-04-2002 | Отправлено: 03:03 22-03-2003
plokijuh30000



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неужели нито не встречался с проблемой? Как передать POST и переметнуться на POST страницу, т.е. повторить <form>submit </form> с помощью PHP

Всего записей: 33 | Зарегистр. 28-04-2002 | Отправлено: 17:07 24-03-2003
Cheery



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

Цитата:
Неужели нито не встречался с проблемой? Как передать POST и переметнуться на POST страницу, т.е. повторить <form>submit </form> с помощью PHP

Нет, нельзя. Подумай сам.. Что передается с помощью headers? Просто строка. Тоже самое, что и при методе GET, а при методе POST данные передаются внутри, значит просто headers не обойдешься.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 17:20 24-03-2003
plokijuh30000



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ok, все логично, а давайте-ка прикинем:
раз с помощью headers() - нельзя, то вообще как бы передать переменные PHP с своего хоста на другой хост и чтобы при ентом у юзверя в браузере была красивая строка типа http://host.com
 
И звестно: при нажатии submit в форме
<form action=http://host.com>
<input type=text name=var value=3>
<input type=submit></form>
откроется страничка http://host.com, при ентом браузер передаст на http://host.com,
переменную var=3;
в ссылочной строке браузера будет
Цитата:
http://host.com
, а не http://host.com/?var=3
 

Цитата:
ЦЕЛЬ: как то же самое сделать на PHP?

 
 
Добавлено
Вот здесь: http://www.phpclasses.org/browse.html/class/6.html куча примеров реализации POST с помощью PHP. PS: да все прекрасно - POST отправляется...
 

Цитата:
НО ПРОБЛЕМА:

 
К примеру если отправляется POST запрос с http://myhost.com/phppage.php
на http://host.com/ все переменные при ентом благополучно отправлятся на http://host.com/
НО остаюсь я по прежнему на своей page http://myhost.com/phppage.php
 
Если далее переметнуться header(Location: http://host.com/) -> ебстебственно при ентом все переменные теряюся , а header(Location: http://host.com/?var=3)  те же самые дрова, которые рубили...
 
КТО-НИДЬ ВСТРЕЧАЛСЯ С РЕШЕНИЕМ ПРОБЛЕМЫ?

Всего записей: 33 | Зарегистр. 28-04-2002 | Отправлено: 18:01 25-03-2003 | Исправлено: plokijuh30000, 18:03 25-03-2003
hamshen

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

Цитата:
К примеру если отправляется POST запрос с http://myhost.com/phppage.php  
на http://host.com/  все переменные при ентом благополучно отправлятся на http://host.com/  
НО остаюсь я по прежнему на своей page http://myhost.com/phppage.php  

Я думаю тебе соит посмотреть что содержит ответ от сервера. Ведь ты имитируешь браузер на php, вот и исходи из этого.

----------
Хорошие умирают молодыми, но плохие умирают уродливо.

Всего записей: 614 | Зарегистр. 22-04-2002 | Отправлено: 20:37 25-03-2003 | Исправлено: hamshen, 20:42 25-03-2003
webdeveloper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сообщить в запросе о том что клиент поддерживает JavaScript?
Заранее спасибо

Всего записей: 1373 | Зарегистр. 30-05-2002 | Отправлено: 16:27 15-04-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webdeveloper
Никак.. эта инфа не передается.. Смотри дискуссии тут:
http://forum.ru-board.com/topic.cgi?forum=31&topic=2573#1

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:26 15-04-2003
apatit



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет!
 
Хочу поднять топик.
 
В общем, мне необходимо залогиниться на одном из сайтов по протоколу HTTPS. Например, на сайте www.regnow.com это делается без проблем. Собственно, там вообще сабмита как такового нет, просто идешь по нужной тебе ссылке по такой схеме https://login:password@www.regnow.com...
 
На сайте же shareit.com такой номер уже не проходит, пытаюсь логиниться, но меня постоянно возвращает на страницу регистрации, хотя ответ сервер выдает такой:
 
HTTP/1.1 200 OK Connection: Keep-Alive Date: Wed, 11 Aug 2004 14:16:00 GMT Server: Apache Content-Type: text/html; charset=iso-8859-1 Content-Type: text/html; charset=iso-8859-1 Client-Date: Wed, 11 Aug 2004 14:16:03 GMT Client-Peer: 217.65.128.71:443 Client-Response-Num: 1 Client-SSL-Cert-Issuer: /C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority Client-SSL-Cert-Subject: /C=DE/ST=Northrhine Westfalia/L=Cologne/O=element 5 Informationstechnologien- und dienstleistungen AG/OU=Network Security/CN=secure.shareit.com Client-SSL-Cipher: DES-CBC3-SHA Client-SSL-Warning: Peer certificate not verified Client-Transfer-Encoding: chunked Keep-Alive: timeout=10, max=100 P3P: policyref="https://secure.element5.com/w3c/p3p.xml", CP="CAO DSP COR ADMo PSA CONo HIS OUR SAMo UNRo LEG UNI" Title: share-it! Control Panel
 
Код такой:
 

Код:
 
#!/usr/bin/perl
 
use LWP::UserAgent;
use HTTP::Request::Common qw(POST GET);
use strict;
use warnings;
 
print "Content-type: text/html; charset=windows-1251\n\n";
 
$|++;
 
my ($uri, $sessid, $random);
 
my $ua = LWP::UserAgent->new();
 
my $req = GET "https://secure.shareit.com/shareit/cp/login/index.html";
my $cont = $ua->request($req)->as_string;
if ($cont =~ /.*=(\d+)&.*=(\w+)"/g) {
$uri = "https://secure.shareit.com/shareit/cp/login/index.html?sessionid=$1&random=$2";
($sessid, $random) = ($1, $2);
}
 
$req = POST $uri,
[PUBLISHER_ID => "Login",
PASSWORD => "Password"];
 
$cont = $ua->request($req)->as_string;
print $cont;
 
exit();
 

 
Вначале выдается текст, который я привел выше, а затем страница регистрации. Где копать?
 
Заранее спасибо.

----------
http://www.murman.ws/ - Нет очередям в налоговой и на почте! Сэкономим бумагу.

Всего записей: 1169 | Зарегистр. 09-10-2001 | Отправлено: 18:22 11-08-2004 | Исправлено: apatit, 18:25 11-08-2004
Cheery



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

Цитата:
Где копать?  


Цитата:
sessionid=$1&random=$2

уверено, что правильно распознаются? проверь

Цитата:
[PUBLISHER_ID => "Login",  
PASSWORD => "Password"];  

я бы запихнул еще и  
name="SUBMIT_LOGINDATA" value="Login"
на всякий случай.


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:28 11-08-2004
apatit



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

Цитата:
Цитата:
sessionid=$1&random=$2
 
уверено, что правильно распознаются? проверь
 

 
Однозначно.
 

Цитата:
я бы запихнул еще и  
name="SUBMIT_LOGINDATA" value="Login"
на всякий случай.  

 
Неужто в POST это играет роль? Хотя кто их знает, этих немцев .

----------
http://www.murman.ws/ - Нет очередям в налоговой и на почте! Сэкономим бумагу.

Всего записей: 1169 | Зарегистр. 09-10-2001 | Отправлено: 19:34 11-08-2004
Cheery



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

Цитата:
Неужто в POST это играет роль? Хотя кто их знает, этих немцев

играет.. это тоже передается в скрипт и может использоваться

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:49 11-08-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 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