Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //документация: https://tech.yandex.ru/webmaster/doc/dg/concepts/About-docpage/
- /* Создание приложения:
- * https://oauth.yandex.ru/client/new
- * ввести Название приложения
- * Платформы: поставить галочку Веб-сервисы -> нажать Подставить Url для разработки (https://oauth.yandex.ru/verification_code)
- * Доступы: Яндекс.Вебмастер -> галочку напротив Добавление сайтов ...
- * нажать Создать
- * скопировать ID. Если надо отредактировать -> https://oauth.yandex.ru/client/my
- * oauth авторизация: подставить ID приложения и перейти по ссылке ниже:
- * https://oauth.yandex.ru/authorize?response_type=token&client_id=сюда-вставить-id-приложения
- * нажать кнопку Разрешить
- * скопировать код и прописать его в переменную ниже $token:
- */
- $token = '';//подставить token (действует 180 дней)
- $max_sites = 1703;//максимальное кол-во сайтов на 1 аккаунт (лимит: 1703)
- $verification = 'HTML_FILE';//Подтверждение прав с помощью: DNS, HTML_FILE, META_TAG, WHOIS
- $urls = 'urls.txt';//файл с доменами или url
- $save_good = 'added_{uid}.txt';//сюда запишутся домены доб-ые в вебмастер (вместо {uid} подставиться id вебмастер-аккаунта)
- $save_bad = 'notadded_' . time() . '.txt';//сюда запишутся домены, кот не удалось добавить
- //получить user_id:
- $api_url = 'https://api.webmaster.yandex.net/v3/user/';
- $user_id = curl ([ 10002 => $api_url, 10023 => ['Authorization: OAuth ' . $token] ]);
- $user_id = strstr($user_id, 'user_id') ? json_decode ($user_id, true)['user_id'] : die($user_id);
- $good = []; $bad = []; $added = [];
- $save_good = str_replace ('{uid}', $user_id, $save_good);
- if (file_exists($save_good)) foreach (file($save_good, FILE_SKIP_EMPTY_LINES) as $str) $added[str_getcsv($str, "\t")[0]] = 1;
- $count = count($added);
- foreach (file($urls) as $url)
- {
- if ($count >= $max_sites){ echo 'Максимальное кол-во сайтов на 1 аккаунт достигнуто!'; break; }
- if (substr($url, 0, 4) != 'http') $url = 'http://' . ltrim ($url, "/");
- $domain = parse_url(trim($url), PHP_URL_HOST);
- if ($domain && !$good[$domain] && !$bad[$domain] && !$added[$domain])
- {
- if ($uin = add_domain($domain, $user_id, 'Authorization: OAuth ' . $token))
- {
- $good[$domain] = $domain . "\t" . $verification . "\t" . $uin;//записать в формате csv
- $count++;
- }
- else $bad[$domain] = true;
- }
- }
- if (count($good)) file_put_contents($save_good, implode("\r\n", $good) . "\r\n", FILE_APPEND);
- if (count($bad)) file_put_contents($save_bad, implode("\r\n", array_keys($bad)));
- printf ("Добавлено доменов в вебмастер: %s (общее кол-во добавленных сайтов: %s)\nНе получилось добавить: %s",
- count($good), count($added)+count($good), count($bad));
- function add_domain ($domain, $user_id, $token)
- {
- global $api_url, $verification;
- //добавление доменов в вебмастер через api
- //10002 -> url, 47 -> post, 10015 -> postfields, 42 -> headers
- $response = curl ([ 10002 => $api_url . $user_id . '/hosts/', 47=> true, 10015=> json_encode(['host_url' => $domain]), 10023 => ['Content-type: application/json', $token] ]);
- if ( !isset(json_decode($response)->host_id) ) return false;
- //подтверждение прав
- $host_id = 'http:'.$domain.':80';
- $response = curl ([ 10002 => $api_url . $user_id . '/hosts/' . $host_id . '/verification/?verification_type=' . $verification, 47=> true, 10023 => [ $token ] ]);
- $response = json_decode($response);
- if ( !isset($response->verification_uin) ) return false;
- return $response->verification_uin;
- }
- function curl ($opt)
- {//var_dump(get_defined_constants(true)['curl']);//числовые знач констант
- if (!is_array($opt)) return false;
- $ch = curl_init();
- //78 -> connecttimeout, 13 -> timeout, 19913 -> RETURNTRANSFER, 52 -> FOLLOWLOCATION, 68 -> MAXREDIRS, 58 -> AUTOREFERER
- curl_setopt_array($ch, $opt + [78 => 5, 13=> 10, 19913 => true, 52 => true, 68 => 20, 58=> true]);
- $response = curl_exec ($ch);
- curl_close($ch);
- return $response;
- }
Add Comment
Please, Sign In to add comment