136 lines
3.8 KiB
PHP
136 lines
3.8 KiB
PHP
|
<?php
|
|||
|
|
|||
|
declare(strict_types=1);
|
|||
|
|
|||
|
namespace VK\Robots;
|
|||
|
|
|||
|
use VK\Robots\RobotAbstract;
|
|||
|
use VK\Browsers\BrowserAbstract;
|
|||
|
use VK\Proxies\ProxyAbstract;
|
|||
|
|
|||
|
abstract class RobotAbstract
|
|||
|
{
|
|||
|
/**
|
|||
|
* Идентификатор в регистре
|
|||
|
*
|
|||
|
* @var string
|
|||
|
*/
|
|||
|
private int $id_registry;
|
|||
|
|
|||
|
/**
|
|||
|
* Используемый браузер
|
|||
|
*
|
|||
|
* @var BrowserAbstract
|
|||
|
*/
|
|||
|
protected BrowserAbstract $browser;
|
|||
|
|
|||
|
/**
|
|||
|
* Прокси-сервер
|
|||
|
*
|
|||
|
* @var ProxyAbstract
|
|||
|
*/
|
|||
|
protected ProxyAbstract $proxy;
|
|||
|
|
|||
|
/**
|
|||
|
* Обработчик капчи
|
|||
|
*
|
|||
|
* @var CaptchaAbstract
|
|||
|
*/
|
|||
|
protected CaptchaAbstract $captcha;
|
|||
|
|
|||
|
/**
|
|||
|
* Установка идентификатора
|
|||
|
*
|
|||
|
* @return int
|
|||
|
*/
|
|||
|
public function setID(int $id): int
|
|||
|
{
|
|||
|
return $this->id_registry = $id;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение идентификатора
|
|||
|
*
|
|||
|
* @return int
|
|||
|
*/
|
|||
|
public function getID(): int
|
|||
|
{
|
|||
|
return $this->id;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение браузера
|
|||
|
*
|
|||
|
* @return int
|
|||
|
*/
|
|||
|
public function getBrowser(): BrowserAbstract
|
|||
|
{
|
|||
|
// return $this->browser;
|
|||
|
return new \VK\Browsers\Curl;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Метод получения токена аккаунта
|
|||
|
*
|
|||
|
* @return string
|
|||
|
*/
|
|||
|
public function getToken($captcha_key = null, $captcha_id = null): string
|
|||
|
{
|
|||
|
if (!empty($_ENV['ACCOUNT_TOKEN'])) {
|
|||
|
return $_ENV['ACCOUNT_TOKEN'];
|
|||
|
} else if ($this->mobile) {
|
|||
|
$this->token_access = $this->genTokenMobile($captcha_key, $this->captcha_id ?? $captcha_id);
|
|||
|
} else {
|
|||
|
$this->token_access = $this->genToken();
|
|||
|
}
|
|||
|
|
|||
|
return $this->token_access;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
abstract protected function genToken(): string;
|
|||
|
abstract protected function genTokenMobile(string $captcha_key, int $captcha_id): string;
|
|||
|
|
|||
|
// /**
|
|||
|
// * @param null $access_groups
|
|||
|
// * @param bool $resend
|
|||
|
// * @return mixed
|
|||
|
// * @throws VkApiException
|
|||
|
// */
|
|||
|
// private function getTokenAccess($scope = null, $resend = false)
|
|||
|
// {
|
|||
|
// $get_url_token = Curl::getToken('https://oauth.vk.com/authorize?client_id=' . $_ENV['APP_ID'] .
|
|||
|
// '&scope=' . $_ENV['ACCESS_GROUPS'] . ($resend ? '&revoke=1' : '') .
|
|||
|
// '&response_type=token');
|
|||
|
|
|||
|
// echo 'https://oauth.vk.com/authorize?client_id=' . $_ENV['APP_ID'] .
|
|||
|
// '&scope=' . $_ENV['ACCESS_GROUPS'] . ($resend ? '&revoke=1' : '') .
|
|||
|
// '&response_type=token', PHP_EOL;
|
|||
|
// if ($get_url_token['body'] !== false) {
|
|||
|
// if (isset($get_url_token['header']['location'][0]))
|
|||
|
// $url_token = $get_url_token['header']['location'][0];
|
|||
|
// else {
|
|||
|
// preg_match('!location.href = "(.*)"\+addr!s', $get_url_token['body'], $url_token);
|
|||
|
|
|||
|
// if (!isset($url_token[1])) {
|
|||
|
// throw new VkApiException("Не получилось получить токен на этапе получения ссылки подтверждения");
|
|||
|
// }
|
|||
|
// $url_token = $url_token[1];
|
|||
|
// }
|
|||
|
// } else {
|
|||
|
// echo 'жопа';
|
|||
|
// die;
|
|||
|
// }
|
|||
|
// echo $url_token, PHP_EOL;
|
|||
|
// die;
|
|||
|
// $access_token_location = Curl::getToken($url_token)['header']['location'][0];
|
|||
|
|
|||
|
// if (preg_match("!access_token=(.*?)&!s", $access_token_location, $access_token) != 1)
|
|||
|
// throw new Exception("Не удалось найти access_token в строке ридеректа, ошибка:" . Curl::getToken($access_token_location, null, false)['body']);
|
|||
|
|
|||
|
// echo $url_token, PHP_EOL;
|
|||
|
// die;
|
|||
|
// return $access_token[1];
|
|||
|
// }
|
|||
|
}
|