|
|
|
| Подскажите плиз реализацию следующей задачи на пхп,
может кто-то сталкивался с таким:
скрипт запускается кроном на сервере и выполняет следующие действия:
открывает страницу http://1.ru (для примера), в поля логин и пароль,
вводит заданные значения и нажимает кнопку войти,
далее код следующей открывшейся страницы сдирает в переменную для дальнейшего анализа.
Помогите пожалуйста реализовать хотя бы по отдельным элементам что-ли,
пхп еще только изучаю :) | |
|
|
|
|
|
|
|
для: Игорь
(16.08.2004 в 00:33)
| | Очень смахивает на скрипт взлома...
Смотрите html-код страницы, имя скрипта, куда отсылаются данные из формы. И обращаетесь прямо по этому пути. Передаете нужные переменные (логин, пароль) прямо в скрипт, обрабатывающий форму. Ну и делаете что хотите.
На php это делается вот так.
В связи с возможными деструктивными действиями этого скрипта код приводить не будем. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(16.08.2004 в 00:53)
| | Это не для взлома, а для автоматизации отслеживания изменений, нужно будет ежедневно смотреть определенные страницы, не вручную же это делать каждый день... | |
|
|
|
|
|
|
|
для: Игорь
(16.08.2004 в 00:33)
| | Я бы с другой стороны смотрел на задачу...
Клиент -> посылает запрос серверу -> получает HTML-форму с сервера
Клиент заполняет HTML-форму -> отправляет на сервер
Вы хотите реализовать так называемы интелектуального агента... У вас не будет возможности нажимать на кнопки средствами PHP (кнопки у клиента, а PHP на сервере), да и не нужно это... Вы можете загружать HTML-форму, но в случае, когда в качестве пользовательского агента выступает браузер - он автоматически формирует заголовки и отправляет их серверу, а нажатие на кнопку иницирует этот процес. Когда скрипт выполняется на сервере при помощи демона cron - вам придётся открыть сокет и все заголовки передать через него (это если метод POST). Если форма обрабатывается методом GET, данные можно передать через URL передав его методу fopen().
PS Немного сумбурно (очень хочется спать :), но вы можете задавать уточняющие вопросы... | |
|
|
|
|
|
|
|
для: cheops
(16.08.2004 в 01:06)
| | Спасибо за ответ.
Если честно суть понял, но конкретно как это реализовать?
Подскажите, где можно почитать про сокеты и про заголовки, которые нужно будет передавать.
Есть у меня пара учебников по пхп, но там про это ни слова. :( | |
|
|
|
|
|
|
|
для: Игорь
(16.08.2004 в 15:04)
| | Задача разбивается на два этапа:
1) Сокеты, то через что передаём.
2) Протокол HTTP, то что мы передаём через сокеты.
1) Если не собираетесь писать собственный сервер, то с сокеты сильно ударятся не следует - достаточно информации из манула: открыть сокет, поместить в него, прочить из него, закрыть - как с файлами - никаких проблем тут у вас не будет.
2) Вообще всё что связано с Интернет описано в RFC-ах ("Комментарии на запросы") - там есть как информационные документы так и описание протоколов - начиная с 7 апреля 1969 года там опубликуются все стандарты и протоколы. Протокол HTTP описан в RFC2616 (просто в поисковике набирайте RFC2616.txt или RFC2616.pdf - они на каждом углу валяются). Единственная неприятность - они все на ангицком. Искать на русском практически бесполезно - мало охотников переводить - очень уж муторное чтиво (даже я было начал переводить, но плюнул - просто прочитал для себя и всё). Если у вас с ангицким всё в порядке читайте сразу и 2617. В книгах... пожалуй я знаю только одну книгу, которую сейчас можно ещё достать и где описан протокол HTTP: Б. Кришнамурти, Дж. Рексфорд. Web-протоколы. Теория и практика. HTTP/1.1, взаимодействие протоколов, кэширование, измерение трафика - тоже книга муторная, но честно рассмотрены все заголовки. | |
|
|
|
|
автор: ddd (02.08.2005 в 23:20) |
|
|
для: cheops
(16.08.2004 в 22:15)
| | asssssssssssssssssssssssssssssd | |
|
|
|
|
автор: [CNS]brainPhP (02.08.2005 в 23:31) |
|
|
для: ddd
(02.08.2005 в 23:20)
| | пжалуста:
<?
$host = 'www.pox.ru'; # хост сайта который хотим просмотреть (без http://)
$ct = '1'; # 0 - смотреть как html / 1 - смотреть как txt или скачивать файлы
$reqvest = ''; # сюда можешь вставить get запрос типа /index?name=zzzzz
################
# ЖЕЛАЮ УДАЧИ
################
if ($ct == 1) {
header('Content-Type: application/octet-stream', true);
}
if (empty($host)===false)
{
set_time_limit(0);
$port=80;
$max_connect=50;
error_reporting (E_ALL);
// create socket
$socket = socket_create(AF_INET,SOCK_STREAM,0);
// Подрубаемся к серверу
socket_connect($socket,$host,$port) or die ("Не могу подрубиться к серверу!!!");
if (empty($reqvest)===false) {
$ln = "GET http://".$host.$reqvest."\r\n";
$ln .= "HOST:".$host."\r\n";
$ln .= "Content-Type: application/octet-stream\r\n";
$ln .= "\r\n";
}
else {$ln="GET / HTTP/1.0\nHOST:$host\n\n";}
socket_write ($socket, $ln, strlen ($ln));
while ($out = socket_read ($socket,1000, PHP_BINARY_READ)) {
echo $out;
flush();
}
/*socket_close($socket);
exit();*/
}
else {echo "Пишите URL!!";}
?> | |
|
|
|
|
|
|
|
для: Игорь
(16.08.2004 в 00:33)
| | Раз уже поднята тема годичной давности, то приведу ссылку на тему с решением данной проблемы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1879 | |
|
|
|