Страница 1 из 1

Решение ReCaptcha - solverecaptcha.com

Добавлено: 22 янв 2018, 10:56
bigfozzy
Может кому пригодится - http://www.solverecaptcha.com/, как решать рекапчу

lib/SolveRecaptcha.php:
<?php
/*
File: SolveRecaptcha.php
Date: 16/01/2018
Version 1.0
Author: Glenn Prialde
Copyright Solve Recaptcha http://www.solverecaptcha.com 2018.  All rights reserved.


Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* You must provide a link back to http://www.solverecaptcha.com on the site on which this software is used.
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer 
in the documentation and/or other materials provided with the distribution.
* Neither the name of the HenryRanch LCC nor the names of its contributors nor authors may be used to endorse or promote products derived 
from this software without specific prior written permission.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
THE AUTHORS, OWNERS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES 
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
DEALINGS IN THE SOFTWARE.  
*/

class SolveRecaptcha {

	private $host = 'api.solverecaptcha.com';
	private $uid = null;
	private $key = null;		
	private $port = 80;
	private $remoteFile = "/index.php";
	private $basicAuthUsernameColonPassword = "";
	private $bufferSize = 2048;
	private $mode = "get";
	private $fromEmail = "admin@solverecaptcha.com";
	private $postData = "";
	private $localFile = "";
	private $proxy_host = "";
	private $proxy_port = "";
	private $is_proxy = 0;
	
	public function __construct($uid, $key) {
		$this->uid = $uid;
		$this->key = $key;
	}	

	public function solve($google_site_key, $page_url) { 
		$url = 'http://api.solverecaptcha.com/index.php?sitekey=' . $google_site_key . '&pageurl=' . urlencode($page_url) . '&key=' . $this->key . '&user_id=' . $this->uid;

		if ($this->is_proxy == 1) {
			$ret = $this->_get_request($url, $this->proxy_host, $this->proxy_port);
		} else {
			$ret = $this->_get_request($url, null, null);
		}		
		
		return $ret;
	}		
	
	public function set_proxy($host, $port) {
		$this->proxy_host = $host;
		$this->proxy_port = $port;
		$this->is_proxy = 1;
	}
	
	private function _get_request($url, $proxy_host = null, $proxy_port = null) {			
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_HEADER, FALSE);					
		curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);	
		curl_setopt($ch, CURLOPT_USERAGENT,  "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2pre) Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8");
		curl_setopt($ch, CURLOPT_POST, FALSE);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
		curl_setopt($ch, CURLOPT_TIMEOUT, 60);
		curl_setopt($ch, CURLOPT_TCP_NODELAY, TRUE);
		
		if ($proxy_host != null && $proxy_port != null) {			
			$proxy = $proxy_host . ":" . $proxy_port;
			curl_setopt($ch, CURLOPT_PROXY, $proxy);
		}				
		
		$response = curl_exec($ch);
		curl_close($ch);
		
		return $response;		
	}	
}

?>

example:
<?php
	include ('lib/SolveRecaptcha.php');
	
	$key = "[<YOUR API KEY]"; // Get your own key at http://www.solverecaptcha.com/amember/signup
	$uid = "[<YOUR USER_ID]"; // Get your own user_id at http://www.solverecaptcha.com/amember/signup
	
	$api = new SolveRecaptcha($uid, $key);	
	
	// Solve Google's reCAPTCHA version 2
	print $api->solve('6LcT6wATAAAAAMBYUbtdHChwcLt3kaoBpvICxdDj', 'https://www.isnare.com/login.php');
?>

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 01 фев 2018, 07:18
Ruslan
Добрый день.

Уважаемые друзья.

На сегодняшний уменя стоит задача по captca. Мне необходимо сделать скриншот капчи в папку, так как при сохранении капча даёт другие значения. По скриншоту распознать капчу с помощью антигейт и ввести в поле. Я не много запутался в алгаритме по обходу капчи. Не могли бы вы да мне направление пожалуйста.

Буду благодарен за ответ.

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 01 фев 2018, 14:18
Support
http://humanemulator.net/objects/DOM/a_common.php#save

Для того что бы сделать скриншот любого элемента в том числе и картинки можно использовать команды типа screenshot_by_*

Сохранить (сделать скриншот) элемент

screenshot_by_number – скриншот, используя номер
screenshot_by_name – скриншот, используя имя
screenshot_by_src – скриншот, используя src
screenshot_by_attribute – скриншот, используя значение атрибута

И уже сохранённые отправлять в сервис распознавания. C помощью функций распознавания, например:

http://humanemulator.net/objects/DOM/im ... aptcha.php

recognize_by_anticaptcha($url,$file,$key,$path=’http://antigate.com’,$is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 0, $is_numeric = 0, $min_len = 0, $max_len = 0,$frame=-1,$is_rusian=0); - данная функция используется для распознавания картинки как каптчи сервисом 'anticaptcha'

Функция на вход принимает параметры:

$url – это урл картинки если задан пустой (“”) то картинка берётся из указанного файла
$file – файл с картинкой, в зависимости от значения параметра $url, используется как хранилище или источник картинки
$key – ключ(идентификатор) пользователя
$path – задаём путь к серверу
$is_verbose – отражать в окне отладки процесс распознания капчи
$rtimeout – задержка между опросами статуса капчи
$mtimeout – время ожидания ввода капчи
$is_phrase – 0 либо 1 – флаг “в капче 2 и более слов”
$is_regsense – 0 либо 1 – флаг “регистр букв в капче имеет значение”
$is_numeric – 0 либо 1 – флаг “капча состоит только из цифр”
$min_len – 0 (без ограничений), любая другая цифра указывает минимальную длину текста капчи
$max_len – 0 (без ограничений), любая другая цифра указывает максимальную длину текста капчи
$frame – 1 - номер фрейма с картинкой
$is_russian – 1 - для распознания рускоязычными пользователями

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 01 фев 2018, 15:18
Ruslan
Спасибо большое.

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 07 фев 2018, 12:51
Ruslan
Добрый день.

Уважаемые друзья.

На данный момент я столкнулся с такой ошибкой CURL returned error: Failed to connect to anti-captcha.com port 443: Timed out.

Не могли вы дать мне направление в какую сторону копать. Мой код
($image->screenshot_by_number("C:\\apps\\test.jpg",3)."\n";
$anticapcha->api_key="key"; // ключ антигейт
$anticapcha->recognize("C:\\apps\\test.jpg", $anticapcha->api_key, "https://anti-captcha.com");)

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 07 фев 2018, 13:52
Support
В какой версии программы вы работаете ?

В ошибке говориться, что нет соединения с сервисом распознавания капч.

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 07 фев 2018, 14:58
Ruslan
HumanEmulator 4.10.14

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 07 фев 2018, 16:56
Support
Ruslan писал(а):
07 фев 2018, 14:58
HumanEmulator 4.10.14
У вас проблема в том что нет соединения с антикапчей.

Вот скрипт из папки с примерами:

// API ключ
$anticapcha->api_key="ваш ключ";

// 1 
echo "1. Перейдем на полигон : ";
echo $browser->navigate("http://www.humanemulator.net/poligon/image.html")."<br>";

// 2 
echo "2. Распознать каптчу используя сервис anti-capcha.com (как цифры) : ";
echo $image->screenshot_by_src("tmp/1.jpg","captcha.jpg",false)." ";
$anticapcha->is_numeric=1; // результат - цифра
$anticapcha->min_len=5; // минимальная длина результата
$anticapcha->max_len=5; // максимальная длина результата
echo $anticapcha->recognize_image($debug->get_cur_script_folder()."tmp\\1.jpg")."\n";

Возвращает в окно отладки следующее:

1. Перейдем на полигон : 1
2. Распознать каптчу используя сервис anti-capcha.com (как цифры) : 1 OK|74151251
captcha sent, got captcha ID 74151251
waiting for 5 seconds
88823

Документация по объекту http://humanemulator.net/objects/WEB/anticaptcha.php


Попробуйте не задавать путь к сервису распознавания, то есть что бы было :
echo $anticapcha->recognize_image($debug->get_cur_script_folder()."tmp\\1.jpg")

Ну и не забыть остальные настройки задать в зависимости от типа разгадываемой капчи.

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 08 фев 2018, 07:31
Ruslan
Добрый день.
Спасибо.

Как включить в humanemulatore работу с прокси сервером?

Re: Решение ReCaptcha - solverecaptcha.com

Добавлено: 08 фев 2018, 12:43
bigfozzy