Как автоматически отправить (POST) форму с удаленного сервера?

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

Я попытался написать исполняемый код php с классом Snoopy, чтобы выполнить эту работу, но это не сработало (описание здесь)

Страница, которую я пытаюсь заполнить и отправить автоматически: http://example.com/?page=a а источник страницы следующий:

<form action="" method="post" class="horizontal-form" role="form" >
<input type="hidden" name="submit_form" value="true" />
<input type="text" name="field_name" class="form-control" value="" >
<button type="submit" class="btn"><i class="icon-ok"></i> Send</button>
</form>

Любая идея, как я могу заполнить "field_name" автоматически, используя скрипт /php код с моего собственного сайта и автоматически отправить эту форму? Я думаю, что могу использовать CURL, но я новичок и не знаю как.:(

Спасибо за помощь.

2 ответа

Вы не можете заполнить форму с помощью php, так как php является языком на стороне сервера. Вы можете заполнить форму с помощью JavaScript. Для этого есть несколько рамок (phantomjs, casperjs).

Вы можете попытаться опубликовать данные формы напрямую, используя curl в PHP.

<?php

$data = array(
    'submit_form' => 1,
    'field_name' => 'your value here',
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/post-url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$output = curl_exec($ch);
$info = curl_getinfo($ch);

curl_close($ch);

Вы можете найти URL, посмотрев в консоли вашего браузера:

форма сообщения

Ваш запрос может быть заблокирован, потому что он поступает с другого сервера, но вы можете попробовать. Если вы хотите "имитировать" обычного посетителя, вы можете начать с установки строки агента пользователя, возможно, также измените HTTP_REFERER.

curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36');
curl_setopt($ch, CURLOPT_REFERER, 'http://www.example.com/the-url-of-the-form');

$(document).ready(function(){
    $('#form1').submit(ajax);
})
function ajax(){
        $.ajax({
            url : 'inserir.php',
            type : 'POST',
            data : $('form').serialize(),
            success: function(data){
                $('#resultado').html(data);
            }
        });
        return false;
}
...
window.onload=function(){
    setInterval(ajax, 5000);
}
проверьте ссылку для получения дополнительной формы автоматической отправки JQuery AJAX

Другие вопросы по тегам