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:

  1. <?php 
  2.  
  3. function createPostString($aPostFields) {
  4. foreach ($aPostFields as $key => $value) {
  5. $aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
  6. }
  7. return implode('&', $aPostFields);
  8. }
  9.  
  10. if(isset($_POST['tytul']) && isset($_POST['tresc'])){
  11. $tytul = $_POST['tytul'];
  12. $tresc = $_POST['tresc'];
  13. //WCHODZI NA FORUM
  14.  $form_url='http://forumbb3.pl'; 
  15.  $ch=curl_init(); 
  16.  curl_setopt($ch, CURLOPT_URL, $form_url); 
  17.  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'); 
  18.  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  19.  curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); 
  20.  curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
  21.  curl_setopt($ch, CURLOPT_HEADER, 0); 
  22.  $site=curl_exec($ch); 
  23.  
  24.  
  25.  
  26.  
  27. //LOGUJE SIE
  28.  $form_url='http://forumbb3.pl/ucp.php?mode=login'; 
  29.  curl_setopt($ch, CURLOPT_URL, $form_url);
  30.  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'); 
  31.  curl_setopt($ch, CURLOPT_POST, 1); //logowanie - zmienne post 
  32.  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  33.  curl_setopt($ch, CURLOPT_REFERER, $form_url); 
  34.  curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); 
  35.  curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
  36.  curl_setopt($ch, CURLOPT_POSTFIELDS, "username=USER&password=xxx&autologin=0&redirect='index.php'&login='Log In'");  
  37.  curl_setopt($ch, CURLOPT_HEADER, 0); 
  38.  curl_exec($ch);
  39.  
  40.  
  41. //PISZE TEMAT
  42.  
  43. $form_url='http://forumbb3.pl/posting.php?mode=post&f=52'; 
  44.  curl_setopt($ch, CURLOPT_URL, $form_url);
  45.  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'); 
  46.  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  47.  curl_setopt($ch, CURLOPT_REFERER, $form_url); 
  48.  curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); 
  49.  curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
  50.  curl_setopt($ch, CURLOPT_HEADER, 0); 
  51.  $strona=curl_exec($ch); 
  52.  
  53. //POBIERA TOKEN ITP  
  54.  
  55.  
  56.  preg_match ('|<input type="hidden" name="lastclick" value="(.*)" />|U', $strona, $click);
  57.  $lastclick=$click['1'];
  58.  
  59.  
  60.  preg_match ('|<input type="hidden" name="creation_time" value="(.*)" />|U', $strona, $creation);
  61.  $creation_time=$creation['1'];
  62.  
  63.  
  64.  preg_match ('|<input type="hidden" name="form_token" value="(.*)" />|U', $strona, $token);
  65.  $form_token=$token['1'];
  66.  
  67.  
  68.  
  69.  
  70. //WYSYLA TEMAT 
  71.  
  72. $postFields['icon'] = '0';
  73. $postFields['subject'] = $tytul;
  74. $postFields['addbbcode20'] = '100';
  75. $postFields['message'] = $tresc;
  76. $postFields['creation_time'] = $creation_time;
  77. $postFields['post'] = 'Submit';
  78.  
  79. $postFields['attach_sig'] = 'on';
  80. $postFields['topic_type'] = '0';
  81. $postFields['topic_time_limit'] = '';
  82. $postFields['filecomment'] = '';
  83. $postFields['poll_title'] = '';
  84. $postFields['poll_option_texte'] = '';
  85.  
  86. $postFields['poll_max_options'] = '1';
  87. $postFields['poll_length'] = '0';
  88. $postFields['form_token'] = $form_token;
  89. $postFields['lastclick'] = $lastclick;
  90.  
  91.  
  92.  $form_url='http://forumbb3.pl/posting.php?mode=post&f=52'; 
  93.  curl_setopt($ch, CURLOPT_URL, $form_url);
  94.  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'); 
  95.  curl_setopt($ch, CURLOPT_POST, 1); //logowanie - zmienne post 
  96.  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
  97.  curl_setopt($ch, CURLOPT_REFERER, $form_url); 
  98.  curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); 
  99.  curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
  100.  curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($postFields));  
  101.  curl_setopt($ch, CURLOPT_HEADER, 1); 
  102.  curl_exec($ch); 
  103.  curl_close($ch); 
  104.  
  105. ?>


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.