2010-04-06 100 views
1
$page = $curl->post($baseUrl.'/submit.php', array('url'=>$address,'phase'=>'1','randkey'=>$randKey[0],'id'=>'c_1')); 
$exp = explode('recaptcha_image',$page); 

的ID recaptcha_image未發現雖然如果我echo $page;網頁將被顯示,令人驚奇地連recpatcha DIV(與圖像本身)。 Curl不應該爲recaptcha加載圖像,但不知何故,雖然當我試圖找到div,但它不在那裏。有沒有一種方法可以捕獲recaptcha圖像的網址?驗證碼圖像和捲曲+ PHP

+1

你不應該垃圾其他網站。這是非常糟糕的事情,使整個互聯網無法使用。以及你怎麼敢問這裏的垃圾郵件,而這裏的每個人都有自己的網站,不希望它被垃圾郵件 – 2010-04-06 04:26:17

+2

老實說,你不知道他們爲什麼要這樣做。由於他們昨天還沒有創建這個賬戶,爲什麼你會立即承擔惡意? – 2010-04-06 04:36:46

+0

@Arda Xi:你認爲什麼?他是在爲後代存儲所有reCAPTCHA挑戰? – 2011-07-17 03:15:25

回答

3

您需要使用像這樣的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自身的挑戰。該圖像將位於$img變量中。

+0

問題不在於找到正確的div,而是在用curl解析javascript。由於recaptcha使用js加載,curl將獲得html,但不會生成由js生成的圖像。該圖像將僅在瀏覽器中顯示。我希望你明白我想說明的是什麼。 – user253530 2010-04-06 15:09:06

+0

我明白了,編輯答案反映了這一點。 – 2010-04-06 15:31:20

+0

謝謝你,我將它標記爲已接受的答案,因爲我幾乎做了同樣的事情。 Curl不解析JavaScript,所以我不得不使用相同的cookie向api.recaptcharging發出另一個請求,以便我可以獲得相同的圖像。最後,我設法獲得了URL和圖像。謝謝!我不知道誰給你的回答標出了負面的反饋,但這樣做是跛腳的。感謝您的幫助! – user253530 2010-04-06 17:46:15