Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Имитация браузера-запрос методом post

Автор: Cheery
Дата сообщения: 14.08.2004 01:04
apatit

Цитата:
Set-Cookie: ASP.NET_SessionId=blablabla; path=/
Это оно?

да.. ID сессии.. все остальные данные хранятся на сервере.. при запросе файла это печенье тоже нужно передавать.
Автор: apatit
Дата сообщения: 14.08.2004 23:18
Cheery

Цитата:
при запросе файла это печенье тоже нужно передавать.


Ты cookie_jar имеешь в виду? У меня пока по-нормальному не получилось с ним работать. Насколько я понял, достаточно просто инициализировать с помощью cookie_jar поддержку куков в UserAgent. В этом случае все куки будут сохраняться и передавать при необходимости. Но, видимо, что-то не так, не передается эта штука .
Автор: Cheery
Дата сообщения: 14.08.2004 23:25
apatit
http://www.getinfo.ru/article522.html
http://www.perl.com/pub/a/2002/08/20/perlandlwp.html?page=2
http://www.perldoc.com/perl5.8.0/lib/LWP/UserAgent.html
Автор: apatit
Дата сообщения: 15.08.2004 00:18
Cheery
За ссылки спасибо!

Правда, все это я уже многажды перечитывал. Мне вот что нужно понять. Куку эту нужно в заголовок "заталкивать" или подобно тому, как параметры передаются?
Автор: Cheery
Дата сообщения: 15.08.2004 00:31
apatit

Цитата:
Правда, все это я уже многажды перечитывал. Мне вот что нужно понять. Куку эту нужно в заголовок "заталкивать" или подобно тому, как параметры передаются?

либо (сначала включив их запись)

Код:
my $cookie_jar = HTTP::Cookies->new;
$cookie_jar->set_cookie($version, $key, $val, $path,
$domain, $port, $path_spec, $secure, $maxage, $discard,
\%rest)
$cookie_jar->add_cookie_header($request);
Автор: apatit
Дата сообщения: 16.08.2004 14:49
Cheery

Цитата:
либо

Код:

use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$req = HTTP::Request->new(GET =>
"$URL_of_affiliate?total=$total&subtotal=$subtotal");
.....
if ($id) {
$req->header('Cookie' => "AFFILIATE=$id"); #put the cookie in the
header if $id exists
}
$res = $ua->request($req);

Автор: Cheery
Дата сообщения: 16.08.2004 23:33
apatit

Цитата:
Немножко видоизменю задачу. В общем, скрипт 1 предназначен для скачивания файла. Реально ли из скрипта 2, обращающегося к скрипту 1, добиться того же эффекта (то есть, скачать файл)?

зависит от того, как он написан.. реально.
Автор: apatit
Дата сообщения: 16.08.2004 23:42
Cheery

Цитата:
зависит от того, как он написан.. реально.


Ладно, хотя бы ссылку тогда на файл...
Я вот мониторил процесс скачивания по редиректной ссылке с помощью MyNetMon. Полный путь к файлу "засветился". А вот из скрипта реально его получить?
Автор: Cheery
Дата сообщения: 16.08.2004 23:43
apatit

Цитата:
Полный путь к файлу "засветился". А вот из скрипта реально его получить?

да. если полный путь передался браузеру, то значит, что можно его получить и скриптом.
Автор: apatit
Дата сообщения: 16.08.2004 23:55
Cheery

Цитата:
да. если полный путь передался браузеру, то значит, что можно его получить и скриптом.


То есть, он где-то в заголовке должен содержаться?
Автор: Cheery
Дата сообщения: 17.08.2004 00:01
apatit

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

если передается браузеру, а не выдается файл полностью скриптом, то да..
ну что мне, читать лекции о http протоколе?
http://detail.phpclub.net/article/http_request
Автор: edogs
Дата сообщения: 31.05.2005 13:53
В тему пожалуй.
Сколько классов на pear не обыскались - всё какие-то самодельные поделки, без документации и вообще.
В результате случайно где-то наткнулись на
http://snoopy.sourceforge.net/
Рулит!
Автор: Optimistique
Дата сообщения: 08.01.2006 00:08
Не являюсь специалистом в php, хотя имею минимальные познания.

Возникла задача следующего рода - нужно под зарегистированным именем заполнять форму на php.

То есть имеется login, пароль и текст (файл на локальном ftp, всё там же, где все данные, сама форма на php и т.п.). Нужно ввести этот текст с данным login'ом под паролем в форму по нажатию кнопки или по расписанию.

Вероятно, наилучшим решением было бы создание форумного бота, который бы этим занимался. Как его сделать? Буду благодарен за конструктивные советы.
Автор: SiMM
Дата сообщения: 08.01.2006 00:19
Optimistique, руками работайте. Совсем уже спамеры страх потеряли.
Автор: Optimistique
Дата сообщения: 11.01.2006 08:20
SiMM, если вы не можете ответить по существу, помолчите.

У меня есть свой форум и не один десяток информационных статей, которые нужно туда вогнать, желательно по расписанию.
Автор: Pleshkov
Дата сообщения: 11.01.2006 09:11
Optimistique
раз свой форум и свои статьи, "вгоняйте" их сразу в базу данных как надо.
Автор: Brodyaga
Дата сообщения: 11.01.2006 10:47
Optimistique
Почитайте про HTTP заголовки и сокеты в РНР.
Автор: Optimistique
Дата сообщения: 11.01.2006 13:37
Pleshkov, спасибо, но как? Тексты я кладу на тот же ftp, на котором лежит форум, процедурно не очень понятно, что вызывать...

Писать сразу в базу данных - думаю, смогу разобраться, как, но очень желательно, чтобы появление новых записей происходило по расписанию, то есть предлагается писать в базу по расписанию?

С уважением, Дмитрий.

Brodyaga, спасибо, почитаю. Пока это для меня как тёмный лес. :|

Автор: SiMM
Дата сообщения: 11.01.2006 15:45

Цитата:
если вы не можете ответить по существу, помолчите.
Если пациент не может описать задачу в необходимом объёме с первого раза - его приходится к этому подталкивать - навыками телепатии я, к сожалению, как и многие другие, не обладаю, а если бы обладал - то ответил бы как Pleshkov
Цитата:
чтобы появление новых записей происходило по расписанию, то есть предлагается писать в базу по расписанию?
CRON
Автор: Brodyaga
Дата сообщения: 11.01.2006 16:53
Запуск 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
ежеминутно будет запускаться..
Автор: Optimistique
Дата сообщения: 01.04.2006 08:03
CRON запускается, всё ок
Автор: NeveR_Mind
Дата сообщения: 22.05.2006 10:24
Переехали отсюда: http://forum.ru-board.com/topic.cgi?forum=31&bm=1&topic=10197#1

Учточняю:
Помогите решить вроде бы простую проблему:
надо просто отправить данные на другой сайт. Но принимающего файла там нет.
Это вообще даже не сайт а типа веб-интерфейса. Т.е. по адресу типа http://server:4040 находиться форма. Ни изменить форму, ни сделать с ней что-либо отличное от ввода данных и нажатия на кнопочку естественно нельзя.
Так вот мне надо чтобы эти данные в форму забивались с моей страницы по ссылке... Передать же параметры(известные) и просабмитить не получается. Просто открывается страница(http://server:4040), но данные не передаются.
Поэтому если не сложно, приведите пожалуйста пример передачи параметров и сабмита формы на сайте типа http://server:4040 (ещё раз говорю - принимающего файла там НЕТ, может поэтому не срабатывает?)
Автор: Cheery
Дата сообщения: 22.05.2006 16:59
NeveR_Mind

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

а прочитать тему сначала? примеров полно.
принимающий "файл" - корень, то есть /
Автор: NeveR_Mind
Дата сообщения: 23.05.2006 14:49
Cheery

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


И ни один из них у меня не заработал! На perl я не пробовал, и не хочеться, т.к. есть способы (вышеописанные) на php и jscript - после этих примеров я даже свой код привел (в старой теме) и сказал что он НЕ CРАБАТЫВАЕТ. Думаешь если я ещё пару раз тему прочитаю он заработает?

я упростил задачу до минимума - просто передать параметр в форму на чужом сайте - это так сложно вместо советов прочитать всё ещё раз привести пару строчек кода который это должен делать?

Такое ощущение, что меня не понимают... Говорю же есть форма - поле ввода и кнопка - на странице http://xxx.ru. Я могу зайти на эту страницу написать там слово "XXX" и нажать на кнопку. А мне надо зайти на МОЮ страницу по адресу http://yyy.ru/emul.php и чтобы в результате вышеописанные действия выполнились. Где такой пример??? Я уже начинаю в своем восприятии сомневаться! ?????????? Я не увидел (( Cheery ты не знаешь как это сделать, или тебе кажеться пять сообщений с просьбой о помощи найти тот самыйпост на странице более полезны чем твой конкретный ответ?
Автор: Cheery
Дата сообщения: 23.05.2006 19:31
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, которое содержит в теле данные о переменных формы.
Автор: 0x7d26a
Дата сообщения: 23.05.2006 22:20
Люди помогите решить проблему:
Надо зайти на сайт, пройти авторизацию и получить куки.
Страница авторизации: 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>
......
Автор: Cheery
Дата сообщения: 23.05.2006 22:47

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

а разве имя переменной может начинаться с цифры?
если хэш, то напиши '1action'
Автор: Break_Action
Дата сообщения: 24.05.2006 03:45
Я использую такой вариант, может кому пригодиться.
Нужна либа 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);
Автор: 0x7d26a
Дата сообщения: 24.05.2006 06:53
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
Автор: Cheery
Дата сообщения: 24.05.2006 06:56
0x7d26a
ну я же сказал.. напиши как '1action'=>"значение"

Страницы: 1234

Предыдущая тема: Язык программирования Python (Питон, Пайтон)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.