Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
подскажите плиз, каким образом можно сохранить картинку recaptcha для распознания или как выдрать ссылку из жабаскрипта на эту каритнку
Сам то пробовал отключать js? Рекапча работает, но некоторые сайты не принимают такие данные. Тем более что это намного геморойнее.Нахрена дергать с жабоскрипта? Грузи айфрейм, в нем все что тебе нужно.
Хотя ты мог-бы для приличия отключить в своем браузере яваскрипт и посмотреть что произойдет. Уверен - глупых вопросов тогда-б не задавал.
function preg($i){
global $result;
preg_match ('|'.$i.'|is' , $result, $r);
return $r[1];
}
$result = ch('https://www.livejournal.com/create.bml');
$sid = preg('name="lj_form_auth" value="(.*?)"');
$url_js = preg('src="(https://api-secure.recaptcha.net.*?)"'); // файл js где хранится ИД картиники
$result = ch($url_js.' https://www.livejournal.com/create.bml');
$url_pic = preg("challenge : '(.*?)'");
$picture = ch("http://api.recaptcha.net/image?c=".$url_pic);
$fp_p=fopen("recapcha.png",'w');
fwrite($fp_p,$picture);
fclose($fp_p);
echo '<img src="recapcha.png">';
Написал вот такСам то пробовал отключать js? Рекапча работает, но некоторые сайты не принимают такие данные. Тем более что это намного геморойнее.
вот
Где ch() - это функция curl или сокет, которая коннектится к урлу, отправляет куки и возвращает содержимоеPHP:function preg($i){ global $result; preg_match ('|'.$i.'|is' , $result, $r); return $r[1]; } $result = ch('https://www.livejournal.com/create.bml'); $sid = preg('name="lj_form_auth" value="(.*?)"'); $url_js = preg('src="(https://api-secure.recaptcha.net.*?)"'); // файл js где хранится ИД картиники $result = ch($url_js.' https://www.livejournal.com/create.bml'); $url_pic = preg("challenge : '(.*?)'"); $picture = ch("http://api.recaptcha.net/image?c=".$url_pic); $fp_p=fopen("recapcha.png",'w'); fwrite($fp_p,$picture); fclose($fp_p); echo '<img src="recapcha.png">';
<?php
function preg($i){
global $result;
preg_match ('|'.$i.'|is' , $result, $r);
return $r[1];
}
function ch($site_url) {
$ch_s = curl_init();
curl_setopt($ch_s, CURLOPT_URL, $site_url);
curl_setopt($ch_s, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch_s, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch_s);
curl_close($ch_s);
return $data;
}
$result = ch('https://www.livejournal.com/create.bml');
$sid = preg('name="lj_form_auth" value="(.*?)"');
$url_js = preg('src="(https://api-secure.recaptcha.net.*?)"'); // файл js где хранится ИД картиники
$result = ch($url_js.' https://www.livejournal.com/create.bml');
echo $url_js;
$url_pic = preg("challenge : '(.*?)'");
echo $url_pic;
$picture = ch("http://api.recaptcha.net/image?c=".$url_pic);
$fp_p=fopen("recapcha.png",'w');
fwrite($fp_p,$picture);
fclose($fp_p);
echo '<img src="recapcha.png">';
?>
да, у меня была немного модфицированная-компактная функция курла, строчкуНаписал вот так
Почему то не заработало. Вот этот код точно рабочий $url_pic = preg("challenge : '(.*?)'");PHP:<?php function preg($i){ global $result; preg_match ('|'.$i.'|is' , $result, $r); return $r[1]; } function ch($site_url) { $ch_s = curl_init(); curl_setopt($ch_s, CURLOPT_URL, $site_url); curl_setopt($ch_s, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch_s, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch_s); curl_close($ch_s); return $data; } $result = ch('https://www.livejournal.com/create.bml'); $sid = preg('name="lj_form_auth" value="(.*?)"'); $url_js = preg('src="(https://api-secure.recaptcha.net.*?)"'); // файл js где хранится ИД картиники $result = ch($url_js.' https://www.livejournal.com/create.bml'); echo $url_js; $url_pic = preg("challenge : '(.*?)'"); echo $url_pic; $picture = ch("http://api.recaptcha.net/image?c=".$url_pic); $fp_p=fopen("recapcha.png",'w'); fwrite($fp_p,$picture); fclose($fp_p); echo '<img src="recapcha.png">'; ?>
У меня echo $url_pic пустоту возвращает.
$result = ch($url_js.' https://www.livejournal.com/create.bml');
$result = ch($url_js);
<?php
function ch($site_url,$can_get_headers) {
$ch_s = curl_init();
if ($can_get_headers == 1) {
curl_setopt($ch_s, CURLOPT_COOKIESESSION, TRUE); //новая сессия. Старые куки игнорируются.
curl_setopt ($ch_s, CURLOPT_HEADER, 1); //включаем получение заголовков
$cookie_path = dirname(__FILE__).'\test.txt';
curl_setopt($ch_s, CURLOPT_COOKIEFILE, $cookie_path);
curl_setopt($ch_s, CURLOPT_COOKIEJAR, $cookie_path);
}
curl_setopt($ch_s, CURLOPT_URL, $site_url);
curl_setopt($ch_s, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch_s, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch_s, CURLOPT_RETURNTRANSFER, 1); //возвращаем результат, вместо вывода результата на экран
$data = curl_exec($ch_s);
curl_close($ch_s);
return $data;
}
function send_post_data ($post_url,$post_data) {
// $post_data - PAST которые нужно отправить
// $get_url - куда отправить ,$coo- строка куков,$refer - якобы откуда пришли, некоторые проверяют
$ch = curl_init();
//curl_setopt($ch, CURLOPT_PROXY, "http://192.168.2.600:2323");
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //указываем, что результат запроса следует передать в переменную, а не вывести на экран
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // разрешаем перенаправление
curl_setopt($ch, CURLOPT_REFERER, 'https://www.livejournal.com/create.bml');
$cookie_path = dirname(__FILE__).'\test.txt';
curl_setopt($ch, CURLOPT_COOKIE,$cookie_path);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_VERBOSE,1);
$data = curl_exec($ch);
$type=curl_multi_getcontent($ch);
curl_close($ch);
return $type;
}
function preg($i){
global $result;
preg_match ('|'.$i.'|is' , $result, $r); // проверка на соотвествие рег.выражению
return $r[1];
}
if (isset($_POST[submit])) {
echo "Отправляем пост запрос<br />";
$_POST['lj_form_auth'] = urlencode($_POST['lj_form_auth']);
$_POST['username'] = urlencode($_POST['username']);
$_POST['email'] = urlencode($_POST['email']);
$_POST['password']= urlencode($_POST['password']);
$_POST['challenge'] = urlencode($_POST['challenge']);
$_POST['capcha'] = urlencode($_POST['capcha']);
$post_data = $_POST['lj_form_auth'].'&Widget%5BCreateAccount%5D_user='.$_POST['username'].'&Widget%5BCreateAccount%5D_email='.$_POST['email'].'&Widget%5BCreateAccount%5D_password1='.$_POST['password'].'&Widget%5BCreateAccount%5D_password2='.$_POST['password'].'&Widget%5BCreateAccount%5D_bday_mm=3&Widget%5BCreateAccount%5D_bday_dd=12&Widget%5BCreateAccount%5D_bday_yyyy=1991&Widget%5BCreateAccount%5D_setLiveId=no&Widget%5BCreateAccount%5D_service_agree=on&recaptcha_challenge_field='.$_POST['challenge'].'&recaptcha_response_field='.$_POST['capcha'].'&Widget%5BCreateAccount%5D_submit=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C+%D0%B0%D0%BA%D0%BA%D0%B0%D1%83%D0%BD%D1%82';
echo send_post_data ('https://www.livejournal.com/create.bml',$post_data);
}
else {
$result = ch('https://www.livejournal.com/create.bml',1);
$sid = preg('name="lj_form_auth" value="(.*?)"');
$url_js = preg('src="(https://api-secure.recaptcha.net.*?)"'); // файл js где хранится ИД картиники
echo '$sid '.$sid.'<br />';
echo '$url_js '.$url_js.'<br />';
$result = ch($url_js,0);
$url_pic = preg("challenge : '(.*?)'");
echo '$url_pic '.$url_pic.'<br />';
$picture = ch("http://api.recaptcha.net/image?c=".$url_pic,0); //берём картинку
$fp_p=fopen("recapcha.png",'r');
fwrite($fp_p,$picture);
fclose($fp_p);
echo <<<HERE
<form method="POST" action="$_SERVER[SCRIPT_NAME]?submit=1">
<input type="hidden" name="lj_form_auth" value="$sid" />
<input type="hidden" name="livejournal_cookie" value="$sid" />
<input type="hidden" name="challenge" value="$url_pic" />
Имя пользователя: <input type="text" maxlength="16" value="" size="15" name="username" /><br>
Адрес email: <input type="text" maxlength="50" value="" size="28" name="email" /> <br>
Пароль: <input type="text" maxlength="31" value="" size="28" name="password" /> <br>
Дата рождения:
<select name="bday_mm">
<option value="1">Январь</option>
<option value="2">Февраль</option>
<option value="3">Март</option>
<option value="4">Апрель</option>
<option value="5">Май</option>
<option value="6">Июнь</option>
<option value="7">Июль</option>
<option value="8">Август</option>
<option value="9">Сентябрь</option>
<option value="10">Октябрь</option>
<option value="11">Ноябрь</option>
<option value="12">Декабрь</option>
</select> <br>
<input type="text" maxlength="2" value="" size="2" name="day"/>
<input type="text" maxlength="4" value="" size="4" name="year"/>
Проверка, что вы человек: <br>
<img src="recapcha.png"> <br>
<input type="text" name="capcha" value="" /><br>
<input type="checkbox" checked="checked" value="1" /> <br>
<input type="submit" name="submit" value="Создать аккаунт" />
</form>
HERE;
}
?>
не получается выпарсить картинку с капчой. Выдается капчу различная чем на станице.
Можт кто подкинет скриптик сохранения картинки?
$query = http_build_query($query_arr);
$html = $this->curl->post("http://securesignup.net/register_2.php",$query);
preg_match('|src="(http://api.recaptcha.net/noscript\?k=.*?)"|is', $html, $out);
$captcha_url = $out[1];
$html = $this->curl->get($captcha_url);
preg_match('|src="/image\?c=(.*?)"|is', $html, $out);
$captcha_url = "http://api.recaptcha.net/image?c=".$out[1];
$secure_id = $out[1];
$captcha = $this->curl->get($captcha_url);