Заполните форму автоматически, используя curl и php - PullRequest
1 голос
/ 21 июня 2010

Я пытаюсь написать скрипт, который автоматически заполняет формы и затем автоматически нажимает кнопку отправки.

Я прочитал, что вы можете использовать curl для отправки HTTP-запросов, но что вы делаете, когда формаобрабатывает запрос на публикацию с помощью JavaScript, как в коде ниже?

<form name="myform" action="javascript:void(0)" method="POST" onsubmit="return fancy_function(this)">

1 Ответ

2 голосов
/ 21 июня 2010

Исходя из вашего ответа на комментарии выше, вам нужно не "заполнить форму" с помощью curl, а скорее разместить заполненную форму на той же странице, на которую обычно отправляется форма.

Это также называется публикацией на нескольких сайтах, и многие разработчики специально проверяют и не позволяют улучшить безопасность. Это также будет намного сложнее, если в форме есть капча.

Предполагая, что это все еще имеет смысл (я уже использовал эту технику для формы подписки на рассылку), вот что вы хотите сделать:

Чтобы получить URL-адрес действия формы, вам нужно просмотреть код Javascript для сайта и найти, где определена функция funcy_function (). Тогда в теле функции вы, скорее всего, увидите целевой URL. Вы также должны отметить конкретные имена переменных формы в html. Вам нужно будет настроить ваши переменные с точно такими же именами. Тогда ваши настройки скручивания будут выглядеть так:

$url = 'http://www.targeturl.com';
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2;

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );

Это отправит переменные записи на указанный URL, имитируя то, что обычно происходит из формы. HTML-код, который возвращает страница, будет в $ response, если вы захотите проанализировать или использовать его.

...