2012-01-06 15 views
0

不正なロボットが接続されないようにランダムキャプチャを生成する最も良い方法は何ですか?phpでcaptchaの文字を読み込むにはどうすればいいですか?

方法1:

function _generateRandom($length = 4, $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') { 
    return substr(str_shuffle($chars), 0, $length); 
} 

方法2:

function _generateRandom($length=4) 
{ 
    $_rand_src = array(
     array(48,57) //digits 
     , array(97,122) //lowercase chars 
     ); 
    srand ((double) microtime() * 1000000); 
    $random_string = ""; 
    for($i=0;$i<$length;$i++){ 
     $i1=rand(0,sizeof($_rand_src)-1); 
     $random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1])); 
    } 
    return $random_string; 
} 

またはウェイ3 ...

かランダムプロセスを気に...

私はまだドンロボットが生成されたランダムな言葉をどのように推測して、投稿フォームを提出できるのかを知っていますか?

+2

個人的に、私はhttp://www.google.com/recaptchaと一緒に行きたい – jValdron

+1

ロボットが逆ではない、あなたのアルゴリズムを操作することによって、OCRを使ってCAPTCHAを推測します。 –

+0

@Tim Cooper、OCRとは何ですか?ウィキペディアでは見つかりません。ありがとう。 –

答えて

0

フォーム内のCAPTCHAの値を添付する場合はまあ、ロボットはそれを読むことができます... :)

ロボットは、画像を読み取って、いくつかのケースで非常に一般的な手法を用いて文字にイメージを解釈することができます呼ばれる光学式文字認識(OCR)多くのCAPTCHAのは、OCRアルゴリズム

あなたはランダムな文字列を生成する場合を難読化し、反って、試してみると混同されている理由ですが、ここでは鉱山の機能です

# Generate random characters 
# @param $l = length 
# @param $s = use symbols? 
# @param $a = use alphabetical? 
# @param $n = use numbers? 

function rand_chars($l=8,$s=1,$a=1,$n=1) { 
    $string = ''; $chars = array(); 
    if ($s) $chars = array_merge($chars,array(
        33,35,36,37,38,40,41,42,43,44,45, 
        46,47,58,59,60,61,62,63,64,91,93, 
        94,95,123,124,125,126 
        )); 
    if ($a) $chars = array_merge($chars,array(
        65,66,67,68,69,70,71,72,73,74, 
        75,76,77,78,79,80,81,82,83,84, 
        85,86,87,88,89,90, 
        97,98,99,100,101,102,103,104,105,106, 
        107,108,109,110,111,112,113,114,115,116, 
        117,118,119,120,121,122 
        )); 
    if ($n) $chars = array_merge($chars,array(
        48,49,50,51,52,53,54,55,56,57 
        )); 
    for ($i=0;$i<$l;$i++) {shuffle($chars);$string.=chr(reset($chars));} 
    return $string; 
    } 
+0

PS。 http://www.google.com/recaptcha – Prof83

+0

をご覧いただきありがとうございます。google.com/recaptcha –

+0

幸運をお祈りしています:F – Prof83

0

ロボット「を受賞しましたあなたのアルゴリズムを推測するしかし、目に見えるものを読み込もうとします。私はあなたの文字列をエコーし​​ないと仮定します。そうした場合、それはキャプチャを全く持たないのと同じです。しばしば行われる別の問題は、生成された文字列のイメージを読み込み、それを表す歪んだ文字とまったく同じ名前(またはalt)のイメージをロードすることです。それもうまくいかないでしょう。

関連する問題