Полезные материалы по автоматизации веб форм

Авторегистрация аккаунтов, почтовых ящиков, автозаполнение различных веб-форм.
Ответить
Аватара пользователя
Support
Site Admin
Сообщения: 825
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Полезные материалы по автоматизации веб форм

Сообщение Support » 25 май 2018, 13:32

Вводная статья https://humanemulator.info/avtozapolnenie_form.php

FAQ работа с капчей https://humanemulator.info/faq/captcha.php
https://humanemulator.info/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

antonburesh
Сообщения: 7
Зарегистрирован: 24 янв 2019, 17:34

Re: Полезные материалы по автоматизации веб форм

Сообщение antonburesh » 12 окт 2019, 08:29

Добрый день. Т.к. я не смог найти в документации к 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();

Ответить