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

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

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

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

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

Cheery



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

Цитата:
То есть, он где-то в заголовке должен содержаться?

если передается браузеру, а не выдается файл полностью скриптом, то да..
ну что мне, читать лекции о http протоколе?
http://detail.phpclub.net/article/http_request

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:01 17-08-2004
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В тему пожалуй.
Сколько классов на pear не обыскались - всё какие-то самодельные поделки, без документации и вообще.
В результате случайно где-то наткнулись на
http://snoopy.sourceforge.net/
Рулит!

Всего записей: 1778 | Зарегистр. 25-07-2004 | Отправлено: 14:53 31-05-2005
Optimistique

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не являюсь специалистом в php, хотя имею минимальные познания.  
 
Возникла задача следующего рода - нужно под зарегистированным именем заполнять форму на php.  
 
То есть имеется login, пароль и текст (файл на локальном ftp, всё там же, где все данные, сама форма на php и т.п.). Нужно ввести этот текст с данным login'ом под паролем в форму по нажатию кнопки или по расписанию.  
 
Вероятно, наилучшим решением было бы создание форумного бота, который бы этим занимался. Как его сделать? Буду благодарен за конструктивные советы.

Всего записей: 124 | Зарегистр. 07-09-2004 | Отправлено: 01:08 08-01-2006
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Optimistique, руками работайте. Совсем уже спамеры страх потеряли.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 01:19 08-01-2006
Optimistique

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SiMM, если вы не можете ответить по существу, помолчите.
 
У меня есть свой форум и не один десяток информационных статей, которые нужно туда вогнать, желательно по расписанию.

Всего записей: 124 | Зарегистр. 07-09-2004 | Отправлено: 09:20 11-01-2006
Pleshkov



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Optimistique
раз свой форум и свои статьи, "вгоняйте" их сразу в базу данных как надо.

----------
С уважением, Павел

Всего записей: 452 | Зарегистр. 15-06-2004 | Отправлено: 10:11 11-01-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Optimistique
Почитайте про HTTP заголовки и сокеты в РНР.

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 11:47 11-01-2006
Optimistique

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pleshkov, спасибо, но как? Тексты я кладу на тот же ftp, на котором лежит форум, процедурно не очень понятно, что вызывать...
 
Писать сразу в базу данных - думаю, смогу разобраться, как, но очень желательно, чтобы появление новых записей происходило по расписанию, то есть предлагается писать в базу по расписанию?
 
С уважением, Дмитрий.
 
Brodyaga, спасибо, почитаю. Пока это для меня как тёмный лес. :|
 

Всего записей: 124 | Зарегистр. 07-09-2004 | Отправлено: 14:37 11-01-2006
SiMM

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

Цитата:
если вы не можете ответить по существу, помолчите.
Если пациент не может описать задачу в необходимом объёме с первого раза - его приходится к этому подталкивать - навыками телепатии я, к сожалению, как и многие другие, не обладаю, а если бы обладал - то ответил бы как Pleshkov
Цитата:
чтобы появление новых записей происходило по расписанию, то есть предлагается писать в базу по расписанию?
CRON

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 16:45 11-01-2006 | Исправлено: SiMM, 16:46 11-01-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Запуск PHP скрипта из крон:
содержание кронфайла
*
*
*
*
*
/usr/local/bin/php  
/home/user/www/site1/public_html/scrinpt.php
Описания строчек:
Минуты (0-59)  
Часы (0-23)  
День месяца (1-31)  
Месяц в году (1-12)  
День недели (0-6 при этом 0 означает воскресенье)  
Программа, которая будет запущена  
например
1
*
*
*
*
/usr/local/bin/php  
/home/user/www/site1/public_html/scrinpt.php
ежеминутно будет запускаться..

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 17:53 11-01-2006
Optimistique

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CRON запускается, всё ок

Всего записей: 124 | Зарегистр. 07-09-2004 | Отправлено: 10:03 01-04-2006
NeveR_Mind



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Переехали отсюда: http://forum.ru-board.com/topic.cgi?forum=31&bm=1&topic=10197#1 [?]
 
Учточняю:
Помогите решить вроде бы простую проблему:
надо просто отправить данные на другой сайт. Но принимающего файла там нет.
Это вообще даже не сайт а типа веб-интерфейса. Т.е. по адресу типа http://server:4040 находиться форма. Ни изменить форму, ни сделать с ней что-либо отличное от ввода данных и нажатия на кнопочку естественно нельзя.
Так вот мне надо чтобы эти данные в форму забивались с моей страницы по ссылке... Передать же параметры(известные) и просабмитить не получается. Просто открывается страница(http://server:4040), но данные не передаются.
Поэтому если не сложно, приведите пожалуйста пример передачи параметров и сабмита формы на сайте типа http://server:4040 (ещё раз говорю - принимающего файла там НЕТ, может поэтому не срабатывает?)

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



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

Цитата:
Поэтому если не сложно, приведите пожалуйста пример передачи параметров и сабмита формы на сайте типа  

а прочитать тему сначала? примеров полно.
принимающий "файл"  - корень, то есть /

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 17:59 22-05-2006
NeveR_Mind



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

Цитата:
а прочитать тему сначала? примеров полно.  

 
И ни один из них у меня не заработал! На perl я не пробовал, и не хочеться, т.к. есть способы (вышеописанные) на php и jscript - после этих примеров я даже свой код привел (в старой теме) и сказал что он НЕ CРАБАТЫВАЕТ. Думаешь если я ещё пару раз тему  прочитаю он заработает?
 
я упростил задачу до минимума - просто передать параметр в форму на чужом сайте - это так сложно вместо советов прочитать всё ещё раз привести пару строчек кода который это должен делать?
 
Такое ощущение, что меня не понимают... Говорю же есть форма - поле ввода и кнопка - на странице http://xxx.ru. Я могу зайти на  эту страницу написать там слово "XXX" и нажать на кнопку. А мне надо зайти на МОЮ страницу по адресу http://yyy.ru/emul.php и чтобы в результате вышеописанные действия выполнились. Где такой пример??? Я уже начинаю в своем восприятии сомневаться! ?????????? Я не увидел (( Cheery ты не знаешь как это сделать, или тебе кажеться пять сообщений с просьбой о помощи найти тот самыйпост на странице более полезны чем твой конкретный ответ?

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



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

Цитата:
Говорю же есть форма - поле ввода и кнопка - на странице http://xxx.ru. Я могу зайти на  эту страницу написать там слово "XXX" и нажать на кнопку. А мне надо зайти на МОЮ страницу по адресу http://yyy.ru/emul.php и чтобы в результате вышеописанные действия выполнились. Где такой пример???  

http://forum.ru-board.com/topic.cgi?forum=31&topic=2029#9 [?]
вот тебе пример, млин..
посылаешь поля формы, для этого идешь на тот сайт, лезешь в html код и смотришь какие поля отсылаются.
Твои ощущения только из за непонимания работы http протокола.
тебе не нужно "жать кнопку на странице", тебе нужно лишь сформировать отсылку данных также, как это делает браузер. То есть сформировать отсылку сообщения методом POST, которое содержит в теле данные о переменных формы.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:31 23-05-2006 | Исправлено: Cheery, 20:32 23-05-2006
0x7d26a



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди помогите решить проблему:
Надо зайти на сайт, пройти авторизацию и получить куки.
Страница авторизации: login.html

Код:
.....
<form action="/cgi-bin/login.cgi" method="post" name="login" id="login">
<table cellspacing="0" cellpadding="1" border="0"><tr><td bgcolor=#efefef>
<table cellspacing="10" cellpadding="0" border="0" bgcolor="#ffffff" width="220">
<tr><td colspan="2" class=header><b>Login here:</b></td></tr>
 
<tr><td>Login:</td><td><input type="text" name="user"></td></tr>
<tr><td>Password:</td><td><input type="password" name="pass"></td></tr>
 
<tr><td colspan="2" align="right"><a href="/forget.html">forget password</a>
&nbsp;&nbsp;&nbsp;<input type=submit value=login></td></tr>
</table>
</td></tr></table>
 
<input type="hidden" name="action" value="login">
<input type="hidden" name="1action" value="GetByDomain">
<input type="hidden" name="domain" value="....">
 
</form>
......

 
Написал такой скрипт:

Код:
 
#!/usr/bin/perl -w
use strict;
use LWP;
use HTTP::Request;
my $url = "http://domain/cgi-bin/login.cgi";
my $usAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en-US)";
my $referrer = "microsoft.com";
my $CookieFile = "Cookie.txt";  
my $ua = LWP::UserAgent->new;
my $Cookie = HTTP::Cookies->new;
 
$ua->agent($usAgent);
$ua->cookie_jar($Cookie);  
my $req = HTTP::Request->new(GET=>$url, [user=>"0x7d26a", pass=>"passw", action=>"login", 1action=>"GetByDomain", domain=>"...."]);
$req->referer($referrer);
my $response = $ua->request($req);
if ($response->is_success)  
{
print "OK";
$Cookie->extract_cookies($response);  
$Cookie->save($CookieFile);
}
else
{
print "FAIL( @{[$response->status_line()]})";
}
 

 
при запуске выдаёт такую ошибку:

Цитата:
 
syntax error at script.pl line 14, near "1action"
Execution of script.pl aborted due to compilation errors.
 

Подскажите новичку где ошибки!

Всего записей: 125 | Зарегистр. 05-11-2005 | Отправлено: 23:20 23-05-2006
Cheery



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

Цитата:
Подскажите новичку где ошибки!

а разве имя переменной может начинаться с цифры?
если хэш, то напиши '1action'

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:47 23-05-2006
Break_Action



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я использую такой вариант, может кому пригодиться.
Нужна либа IO::Socket

Код:
$url =~ /^[hH][Tt][Tt][Pp]:\/\/([^\/]+)((?::\d+)?)(\/?.*)$/;
$host = $1; $port = $2; $path = $3; $port = 80 if (!$port); $path = '/' if (!$path);
 
$comleng=length($command);
 
T2:
if (!$proxy_host && !$proxy_port)
{
  S3:
  $sock_l = new IO::Socket::INET (PeerAddr=>$host,PeerPort=>$port,Proto=>'tcp',Type=>SOCK_STREAM,'Timeout'=>10);
  if (!$sock_l)
  {
    $local_time=&local_time;
    &error_log("POST ERROR: Can't Create Socket ($url | $command)") if $error_log;
    sleep(60);
    goto S3;
  }
  &debug_log("POST Without Proxy: ($url | $command)");
  print $sock_l qq~POST $path HTTP/1.0\r\nHost: $host\r\nContent-length: $comleng\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept: */*\r\nUser-Agent: $user_agent\r\nPragma: no-cache\r\n\r\n$command~;
}
else
{
  S4:
  $sock_l = new IO::Socket::INET (PeerAddr=>$proxy_host,PeerPort=>$proxy_port,Proto=>'tcp',Type=>SOCK_STREAM,'Timeout'=>10);
  if (!$sock_l)
  {
    $local_time=&local_time;
    &error_log("POST ERROR: Can't Create Socket ($url | $command)") if $error_log;
    sleep(60);
    goto S4;
  }
  &debug_log("POST With Proxy: ($url | $command)");
  print $sock_l qq~POST $url HTTP/1.1\r\nHost: $host\r\nContent-length: $comleng\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept: */*\r\nUser-Agent: $user_agent\r\nPragma: no-cache\r\n\r\n$command~;
}
 
my ($alldata,$data);
while (sysread($sock_l,$data,$size))
{
  $alldata .= $data;
  last if (length($alldata) > $size);
}
$alldata=~s/\r\n/\n/g;
close ($sock_l);
 

Всего записей: 296 | Зарегистр. 12-09-2001 | Отправлено: 04:45 24-05-2006
0x7d26a



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
А можно ли так писать?
[name0=>"0x7d26a", name1=>"passw", name2=>"login", name3=>"GetByDomain", domain=>"...."]
Вроде названия полей тоже обязательно должны передаватся?
1action взято со страницы авторизации:
<input type="hidden" name="1action" value="GetByDomain">
Вобщем я в недоумении.
добавлено:
Дописал строчку use HTTP::Cookies; и написал так '1action'=>"GetByDomain"
стало выдавать такое Bad header argument at script.pl line 15

Всего записей: 125 | Зарегистр. 05-11-2005 | Отправлено: 07:53 24-05-2006 | Исправлено: 0x7d26a, 08:06 24-05-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
0x7d26a
ну я же сказал.. напиши как '1action'=>"значение"

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 07:56 24-05-2006
Открыть новую тему     Написать ответ в эту тему

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

Рейтинг.ru