Почему я иногда не получаю ответ с 2captcha API? - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь решить recaptcha V2 с API 2captcha,

Я использую этот код:

<?php
function token(){
    $apiKey = "MY_API_KEY";
    $googleKey = "6LfBixYUAAAAABhdHynFUIMA_sa4s-XsJvnjtgB0";
    $pageUrl = "https://example.com/";
    $time = time();
    while ( true ) {
       $retrieve= file_get_contents("http://2captcha.com/in.php?key=".$apiKey."&method=userrecaptcha&googlekey=".$googleKey."&pageurl=".$pageUrl, false, $ctx);
       $first = array($retrieve);
       $result = explode('OK|',$first[0]);
       $hello = $result[1];
       $con="http://2captcha.com/res.php?key=".$apiKey."&action=get&id=".$hello;

       sleep(23);
       $getting = file_get_contents($con);
       $second = array($getting);
       $secondresult = explode('OK|',$second[0]);
       $reponsetoken = $secondresult[1];
       echo'<br/>';
       echo'<br/>';
       echo'get new captcha token ...';
       echo'<br/>';
       echo'<br/>';
       if ((time() - $time) >= 99) {
          echo date("Y:m:d g:i:s"), PHP_EOL;
          $time = time();
       }
       sleep(2);
    }
}

if (!empty($reponsetoken)) {
    file_put_contents( 'token.txt', $reponsetoken );
}  else{token();}
?>

Почему я иногда не получаю ответ?

Я пытаюсь привести условие в состояние тайм-аута.

$retrieve= file_get_contents("http://2captcha.com/in.php?key=".$apiKey."&method=userrecaptcha&googlekey=".$googleKey."&pageurl=".$pageUrl, false, $ctx);

Затем я хочу зациклить весь код каждые 2 минуты 30 секунд.

Как я могу использовать условие с file_get_contents()?

Как сделать цикл каждые 2 минуты 30 секунд?

1 Ответ

0 голосов
/ 10 ноября 2018

Это мое решение,

2captcha требуется около 5 секунд и 100 секунд, чтобы решить captcha's.

В моем последнем коде ошибка была во сне (23);

<?php
echo 'Starting Get Token....<br/>';
echo date("Y:m:d g:i:s");
$apiKey = "MY API KEY";
$googleKey = "6LfBixYUAAAAABhdHynFUIMA_sa4s-XsJvnjtgB0";
$pageUrl = "https://example.com";
$time = time();
while ( true ) {
    $ctx=stream_context_create(array('http'=>
    array(
        'timeout' => 20 // 30 sec
    )
    ));

    $retrieve= file_get_contents("http://2captcha.com/in.php?key=".$apiKey."&method=userrecaptcha&googlekey=".$googleKey."&pageurl=".$pageUrl, FALSE,$ctx);
    var_dump($retrieve);
    if (empty($retrieve))
    {
       $retrieve= file_get_contents("http://2captcha.com/in.php?key=".$apiKey."&method=userrecaptcha&googlekey=".$googleKey."&pageurl=".$pageUrl, FALSE,$ctx);
    }
    $first = array($retrieve);
    $result = explode('OK|',$first[0]);
    $hello = $result[1];
    $con="http://2captcha.com/res.php?key=".$apiKey."&action=get&id=".$hello;

    sleep(107);
    $getting = file_get_contents($con);
    $second = array($getting);
    $secondresult = explode('OK|',$second[0]);
    $x = $secondresult[1];
    echo $x;
    echo'<br/>';
    echo'<br/>';
    if (!empty($x)) {
       echo 'Task Finished ... <br/>';
       echo date("Y:m:d g:i:s");
       file_put_contents( 'token.txt', $x );
       sleep(120);
    }
}

?>
...