Witam,
Od jakiegoś czasu piszę bota w cURL, który będzie na moim forum zakładał tematy o newsach pojawiająch się w serwisie. Niedawno udało mi się ukończyć prace, ale podczas testów wyszło, że bot raz działa a raz nie tzn raz podczas wysyłania newsa pisze na forum temat a raz się blokuje i po zalogowaniu się na forum dalej nic już nie robi. Poniżej podaję skrypt bota:
<?php
function createPostString($aPostFields) {
foreach ($aPostFields as $key => $value) {
}
}
if(isset($_POST['tytul']) && isset($_POST['tresc'])){ $tytul = $_POST['tytul'];
$tresc = $_POST['tresc'];
//WCHODZI NA FORUM
$form_url='http://forumbb3.pl';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $form_url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt
($ch, CURLOPT_COOKIEJAR
, dirname(__FILE__).'/cookie.txt'); curl_setopt
($ch, CURLOPT_COOKIEFILE
, dirname(__FILE__).'/cookie.txt'); curl_setopt($ch, CURLOPT_HEADER, 0);
$site=curl_exec($ch);
//LOGUJE SIE
$form_url='http://forumbb3.pl/ucp.php?mode=login';
curl_setopt($ch, CURLOPT_URL, $form_url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4');
curl_setopt($ch, CURLOPT_POST, 1); //logowanie - zmienne post
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $form_url);
curl_setopt
($ch, CURLOPT_COOKIEJAR
, dirname(__FILE__).'/cookie.txt'); curl_setopt
($ch, CURLOPT_COOKIEFILE
, dirname(__FILE__).'/cookie.txt'); curl_setopt($ch, CURLOPT_POSTFIELDS, "username=USER&password=xxx&autologin=0&redirect='index.php'&login='Log In'");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
//PISZE TEMAT
$form_url='http://forumbb3.pl/posting.php?mode=post&f=52';
curl_setopt($ch, CURLOPT_URL, $form_url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $form_url);
curl_setopt
($ch, CURLOPT_COOKIEJAR
, dirname(__FILE__).'/cookie.txt'); curl_setopt
($ch, CURLOPT_COOKIEFILE
, dirname(__FILE__).'/cookie.txt'); curl_setopt($ch, CURLOPT_HEADER, 0);
$strona=curl_exec($ch);
//POBIERA TOKEN ITP
preg_match ('|<input type="hidden" name="lastclick" value="(.*)" />|U', $strona, $click); $lastclick=$click['1'];
preg_match ('|<input type="hidden" name="creation_time" value="(.*)" />|U', $strona, $creation); $creation_time=$creation['1'];
preg_match ('|<input type="hidden" name="form_token" value="(.*)" />|U', $strona, $token); $form_token=$token['1'];
//WYSYLA TEMAT
$postFields['icon'] = '0';
$postFields['subject'] = $tytul;
$postFields['addbbcode20'] = '100';
$postFields['message'] = $tresc;
$postFields['creation_time'] = $creation_time;
$postFields['post'] = 'Submit';
$postFields['attach_sig'] = 'on';
$postFields['topic_type'] = '0';
$postFields['topic_time_limit'] = '';
$postFields['filecomment'] = '';
$postFields['poll_title'] = '';
$postFields['poll_option_texte'] = '';
$postFields['poll_max_options'] = '1';
$postFields['poll_length'] = '0';
$postFields['form_token'] = $form_token;
$postFields['lastclick'] = $lastclick;
$form_url='http://forumbb3.pl/posting.php?mode=post&f=52';
curl_setopt($ch, CURLOPT_URL, $form_url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4');
curl_setopt($ch, CURLOPT_POST, 1); //logowanie - zmienne post
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_REFERER, $form_url);
curl_setopt
($ch, CURLOPT_COOKIEJAR
, dirname(__FILE__).'/cookie.txt'); curl_setopt
($ch, CURLOPT_COOKIEFILE
, dirname(__FILE__).'/cookie.txt'); curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($postFields));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
curl_close($ch);
?>
Jak już wspominałem bot zawsze się loguje na forum, problem pojawia się gdy przychodzi czas na wysłanie tematu. Dlaczego raz działa jak powinien a raz nie?
Pozdrawiam.