Bot wysyłający nowe tematy na forum?

Witam,

Znalazłem w sieci skrypt, który umożliwia wysłanie bota/użytkownika, który w określonym dziale umieści nowy temat, uprzednio logując się oczywiście na forum.

Poniżej przedstawiam kod skryptu:

<?php


function createPostString($aPostFields) {

    foreach ($aPostFields as $key => $value) {

        $aPostFields[$key] = urlencode($key) . '=' . urlencode($value);

    }

    return implode('&', $aPostFields);

}


if(isset($_POST['tytul']) ){

$tytul = $_POST['tytul'];


//WCHODZI NA FORUM

             $form_url='http://forum.fifapolonia.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://forum.fifapolonia.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=HASŁO&autologin=0&redirect='posting.php?mode=post&f=33'&login='Log In'");   

             curl_setopt($ch, CURLOPT_HEADER, 0); 

             curl_exec($ch);  



//PISZE TEMAT


$form_url='http://forum.fifapolonia.pl/posting.php?mode=post&f=33'; 

             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 ('||U', $strona, $click);

             $lastclick=$click['1'];



             preg_match ('||U', $strona, $creation);

             $creation_time=$creation['1'];



             preg_match ('||U', $strona, $token);

             $form_token=$token['1'];





//WYSYLA TEMAT 


$postFields['icon'] = '0';

$postFields['subject'] = 'NEWS: $tytul - komentarze';

$postFields['addbbcode20'] = '100';

$postFields['message'] = 'Treść komentowanego newsa znajduje się pod następującym adresem: [URL=http://www.fifapolonia.pl/comment.php?akcja=pokaz&id=".$ajdi."]http://www.fifapolonia.pl/comment.php?akcja=pokaz&id=".$ajdi."[/URL]';

$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://forum.fifapolonia.pl/posting.php?mode=post&f=33'; 

             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);


}


echo "
Komentarz został dodany na forum"; ?\>[/code]

Problem polega na tym, że bot sie bezproblemowo loguje i zaczyna tworzyć wątek - niestety nie chce go wysłać.

Co muszę zrobić, aby to w końcu wysłał i abym mógł się cieszyć tym skryptem ? :slight_smile:

_ Ehh! próbowałem coś zrobić i kapa nie wiem _

hmm bardzo ładny skrypt, sam napisałem podobny acz uboższy.

Powiem jedno - nie ma uniwersalnego rozwiązania. Każdy taki skrypcik trzeba dopasować pod dane forum. Administrator mógł zmienić nazwę jednego pola i już nie zadziała.

Porównaj pola w skrypcie z polami na atakowanym forum i znajdziesz problem.

Atakowanym ? :smiley: Ja nic nie chce atakować :smiley:

Chcę aby ten skrypt działał, ponieważ chce, aby on zamieszczał temat w odpowiednim dziale, w którym można by zamieszczać komentarze do newsów. Administratorem jestem więc ja i wiem, że phpBB3 ma domyślne nazwy pól, ponieważ ich nie zmieniałem.

Pozdrawiam i liczę na rozwiązanie mojego problemu :wink:

Jak jesteś administratorem to po co obciążać swój serwer cURLem. Lepiej od razu napisać skrypt wstrzykujący dane bezpośrednio do bazy. Można nawet użyć funkcji używanych przez phpbb, żeby się zbytnio nie zmęczyć.

Problem polega na tym, że nie wiem jak to zrobić, dlatego próbowałem użyć tego skryptu. Jeśli byłbyś tak miły i wytłumaczył mi, co mam zrobić to byłbym bardzo wdzięczny :slight_smile:

OK.

Ja zrobiłbym to tak:

Tworze sobie formularz z polami tytuł posta i treść.

Do tego plik php, który elegancko obsłuży formularz, czyli:

Połączy się z bazą danych, uda że jest Tobą (nadasz skryptowi odpowiednią autoryzację $auth, podmienisz zmienne $userdata) i wywołasz odpowiednią funkcję dodawania posta z parametrami pobranymi bezpośrednio z formularza.

Jest niebezpieczeństwo, że ktoś wejdzie na Twój formularz i zacznie dodawać głupoty. Trzeba się zabezpieczyć:

-albo plik z formularzem i php nazwać tak aby nikt nigdy nie odgadł nazwy

-napisać prościutki skrypcik uwierzytelnienia w php

-skorzystać z uwierzytelniania phpbb, tu jest dodatkowy plus - będziesz już uwierzytelniony dla phpbb i nie musisz się męczyć z odpowiednimi prawami dostępu w pliku obsługi formularza. Wyglądać to będzie następująco: logujesz się na swoim forum (używając standardowego login.php), przechodzisz na stronę formularza i swobodnie działasz.

Można zrobić też full automat co pobierze dane z innej strony i doda na Twoje forum. Opcji jest mnóstwo. Sam posiadam takowego “sztucznego nabijacza postów na forum”.

Pozdro.