повторное изображение и curl + php - PullRequest
1 голос
/ 06 апреля 2010
$page = $curl->post($baseUrl.'/submit.php', array('url'=>$address,'phase'=>'1','randkey'=>$randKey[0],'id'=>'c_1'));
$exp = explode('recaptcha_image',$page);

Идентификатор recaptcha_image не найден, хотя, если я echo $page;, будет отображаться веб-страница и, что удивительно, даже div recpatcha (с самим изображением). Curl не должен загружать изображение для recaptcha, но так или иначе это делает, хотя, когда я пытаюсь найти div, его там нет. Есть ли способ захватить URL изображения рекапчи?

1 Ответ

3 голосов
/ 06 апреля 2010

Вы захотите использовать такой HTML-парсер PHP Simple HTML DOM Parser . Примерно так будет работать тогда:

<?php
$page = $curl->post($baseUrl.'/submit.php', array('url'=>$address,'phase'=>'1','randkey'=>$randKey[0],'id'=>'c_1'));
$html->load($page);
$ret = $html->find('script[src^=http://api.recaptcha.net/]',0);
$src = $ret->src;
//I'm not sure how you get an url with your library, so this might or might not work
$page = $curl->get($src);
preg_match("%challenge\ :\ '([a-zA-Z0-9-_]*)',%", $page, $matches);
$img = "http://api.recaptcha.net/image?c=".$matches[1];
?>

Это сначала выбирает страницу, анализирует ее для URL-адреса сценария, затем открывает этот URL-адрес для запроса, который затем добавляется к самому URL-адресу. Изображение будет в переменной $img.

...