Автозаполнение и отправка форм на внешний сайт - PullRequest
3 голосов
/ 05 января 2012

Мне было интересно, как можно автоматически заполнить несколько форм (используя bot/local server) на нескольких страницах внешнего сайта (PHP), используя ajax или curl.

Например, сайт www.abc.com/index.php имеет форму <form> <input name='text'></form>, которая переводит вас на www.abc.com/fst.php, когда форма отправляется, и на www.abc.com/fst.php есть еще одна форма, которую также необходимо заполнить и отправить. Я хочу автоматически заполнить обе формы с моего локального сервера. Как мне это сделать?

1 Ответ

3 голосов
/ 05 января 2012

Самый простой способ - использовать что-то вроде greasemonkey (https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/), но лучшее решение - использовать вкладку «net» для firebug, чтобы захватить сообщение, отправленное при заполнении формы, и повторить это сообщение сCURL (http://php.net/manual/en/book.curl.php)

function post($url,$data) { 
    $process = curl_init($url); 
    curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers); 
    curl_setopt($process, CURLOPT_HEADER, 1); 
    curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent); 
    if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file); 
    if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file); 
    curl_setopt($process, CURLOPT_ENCODING , $this->compression); 
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
    if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy); 
    curl_setopt($process, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($process, CURLOPT_POST, 1); 
    $return = curl_exec($process); 
    curl_close($process); 
    return $return; 
} 
...