witam na początku fragment kodu
//pierwsze dane captcha
if ($_POST['submit'] != 'submit'){
//WYSWIETLANIE FORMULARZA
curl_setopt($hand, CURLOPT_URL, 'http://api.recaptcha.net/noscript?k=6LfEGgIAAAAAABSqQ0rzMd3t-rOU_XrZlC2C9WG2');
curl_setopt($hand, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hand, CURLPROXY_HTTP, 'proxy');
$p=curl_exec($hand);
preg_match('/<input type="hidden" name="recaptcha_challenge_field" id="recaptcha_challenge_field" value="(.*?)" \/>/',$p,$dana); $obraz = 'http://api.recaptcha.net/image?c='.$dana[1];
echo '<img src="'.$obraz.'" />'; echo'<form method="POST"><input name="id"><input type="hidden" value="'.$dana[1].'" name="dana"><input type="submit" name="submit" value="submit"></form>'; }else{
//WYSYŁANIE danuch recaptcha
curl_setopt($hand, CURLOPT_URL, 'http://api.recaptcha.net/noscript?k=6LfEGgIAAAAAABSqQ0rzMd3t-rOU_XrZlC2C9WG2');
curl_setopt($hand, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hand, CURLPROXY_HTTP, 'jakies proxy');
curl_setopt($hand, CURLOPT_POST, 1);
curl_setopt
($hand, CURLOPT_POSTFIELDS
, array( 'recaptcha_challenge_field' => $_POST['dana'],
'recaptcha_response_field' => $_POST['id'],
'submit' => $sub
));
$p=curl_exec($hand);
preg_match('/<textarea rows="3" cols="40">(.*?)<\/textarea>/s',$p,$kod); //pobieranie tokenu captcha
curl_setopt($hand, CURLOPT_URL, 'http://www.erepublik.com/pl/register_captcha');
curl_setopt($hand, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hand, CURLPROXY_HTTP, 'proxy');
curl_setopt($hand, CURLOPT_COOKIESESSION, true);
curl_setopt($hand, CURLOPT_COOKIEFILE, "/tmp/cookiefiles.txt");
curl_setopt($hand, CURLOPT_COOKIEJAR, "/tmp/cookiefiles.txt");
$p=curl_exec($hand);
$token = token($p);
//wysyłanie danych captcha
curl_setopt($hand, CURLOPT_URL, 'http://www.erepublik.com/pl/register_captcha');
curl_setopt($hand, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hand, CURLPROXY_HTTP, 'proxy');
curl_setopt($hand, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1)");
curl_setopt($hand, CURLOPT_POST, 1);
curl_setopt($hand, CURLOPT_REFERER, 'http://www.erepublik.com/pl/referrer/nickjakis');
curl_setopt
($hand, CURLOPT_POSTFIELDS
, array( 'recaptcha_challenge_field' => $kod[1],
'recaptcha_response_field' => 'manual_challenge',
'_token' => $token,
'commit' => $ok
));
$wynik=curl_exec($hand);
}
kod ma na celu zautomatyzowaną rejestracje w erepublik w celach edukacyjnych, fragment kodu jest odpowiedzialny za wpisywanie kodu captcha do przeglądarki z użyciem recaptcha bez użycia JavaScriptu, niestety, na samym końcu w paragrafie //wysyłanie danych captcha - wysyła błąd "CSRF attack detected"
mam 2 przypuszczenia:
nieprawidłowe dane post.
albo kolejny bug związany z niemożnością wpisania kodu bez użycia js
jeśli to 1 to pomóżcie namierzyć gdzie ewentualnie, a leżeli 2-gie to chyba trzeba by było wypełnić recaptchę z włączonym js - nie wiem jak.
Ten post edytował kavillock 10.03.2010, 22:18:13