Вводная статья https://xn--80awbbeioodeq4h3a.xn--p1ai/avtozapolnenie_form.php
FAQ работа с капчей https://xn--80awbbeioodeq4h3a.xn--p1ai/faq/captcha.php
https://xn--80awbbeioodeq4h3a.xn--p1ai/faq/details/ ... aptcha.php
примеры регистрации в почтовых сервисах http://www.x-scripts.com/scripts.php#mail
примеры публикации материалов на сайтах через заполение веб форм http://www.x-scripts.com/scripts.php#site
Регистрация в поисковых системах http://www.x-scripts.com/scripts/add_url.php
статья Как написать простой скрипт автозаполнения веб форм на Human Emulator на примере avito.ru http://www.x-scripts.com/articles/post_form_avito.php
Так или иначе заполнение веб форм или каких-либо текстовых полей присутствуют почти во всех скриптах http://www.x-scripts.com/scripts.php
Полезные материалы по автоматизации веб форм
-
- Сообщения: 7
- Зарегистрирован: 24 янв 2019, 17:34
Re: Полезные материалы по автоматизации веб форм
Добрый день. Т.к. я не смог найти в документации к xWeb рабочий API для разгадывания FanCaptcha через cервис anti-captcha.com было принято решения написать свой класс.
Выкладываю его сдесь, вдруг кому пригодится он. Делал под себя, так что под идеал не претендует)
Выкладываю его сдесь, вдруг кому пригодится он. Делал под себя, так что под идеал не претендует)
Код: Выделить всё
<?php
class reFanCaptcha
{
public $apiKey = "";
public $thisUrl = "";
public $pk = "";
public $surl = "";
public $taskId = "";
private $method = "";
private $postField = array();
private $result = "";
public function createTask()
{
$this->method = __FUNCTION__;
$this->postField['clientKey'] = $this->apiKey;
$this->postField['task'] = array(
'type' => 'FunCaptchaTaskProxyless',
'websiteURL' => $this->thisUrl,
'funcaptchaApiJSSubdomain' => $this->surl,
'websitePublicKey' => $this->pk
);
while (true) {
if ($this->curl()) {
if (!empty($this->result->taskId)) {
$this->taskId = $this->result->taskId;
return true;
}
}
sleep(5);
}
}
private function curl()
{
$ch = curl_init();
curl_setopt(
$ch, CURLOPT_URL, "https://api.anti-captcha.com/" . $this->method
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
$postDataEncoded = json_encode($this->postField);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postDataEncoded);
curl_setopt(
$ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Accept: application/json',
'Content-Length: ' . strlen($postDataEncoded)
)
);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$result = curl_exec($ch);
$res = json_decode($result);
$curlError = curl_error($ch);
if ($res->errorId == 0) {
$this->result = $res;
return true;
} else {
echo $curlError;
}
}
public function getTaskResult()
{
$this->method = __FUNCTION__;
$this->postField['clientKey'] = $this->apiKey;
$this->postField['taskId'] = $this->taskId;
while (true) {
if ($this->curl()) {
if ($this->result->status == "ready") {
return $this->result->solution->token;
}
}
sleep(5);
}
}
}
$FC = new reFanCaptcha();
$FC->apiKey = "";
$FC->thisUrl = "";
$FC->pk = "";
$FC->surl = "";
$FC->createTask();
$FC->getTaskResult();