Перейти к содержимому

Мой скрипт генератора доменов из поисковых подсказок Google

Последнее обновление на 28 мая, 2024

Скрипт PHP генерирует доменные имена по ключевому слову из поисковых подсказок Google. Посмотреть работу скрипта можно на странице.

Генератор работает следующим образом:

  1. Вводите ключевое слово
  2. Скрипт получает список подсказок Google
  3. Подсказки транслитерируются
  4. Если введнено ключевое слово не на русском, то подсказки будут на том языке, на котором введено ключевое слово.
  5. Скрипт выводит варианты доменов на экран.

Можно ввести слово, например, на японском.

Исходный код скрипта адаптирован под Laravel.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Service extends Model
{
    public function vsgoogle($domain){
          function download_page($path){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$path);
        curl_setopt($ch, CURLOPT_FAILONERROR,1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        $retValue = curl_exec($ch);
        $data= curl_getinfo ($ch);
        //print_r($data);	 // смотрим статусы для отладки - http_code
        curl_close($ch);
        return $retValue;
    }
    //меняем плохие вхождения
    function replaceSimbolRu($baseKeyword){

        $searchsimbol = array("ьи", "ье", "ью", "ья", "веб", "веб ", "вебмастер", "онлайн", "вебинар",
            "вебинары"

        );
        $zamenasimbol = array("i", "ie", "iy", "iya", "web", "web ", "webmaster", "online", "webinar",
            "webinary"

        );
        $myZnak = str_replace(  $searchsimbol,  $zamenasimbol,  $baseKeyword  );//преобразование мягкого знака
        return $myZnak;
    }
    //исходный запрос
    $key = $domain;
    $searchsimbol = array(" ");
    $zamenasimbol = array("+");
    $query = str_replace($searchsimbol, $zamenasimbol, $key);

    $urlNoVS = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=".$query;
//отправляем запрос без vs
    $sXML = download_page($urlNoVS);
    $oXML = new \SimpleXMLElement(utf8_encode($sXML));
//отправляем запрос с vs
    $url = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=".$query."+vs";
    $tXML = download_page($url);
    $aXML = json_encode(utf8_encode($tXML));

        $massSuggestion = [];

        for ($i = 0; $i <= 9; $i++) {
            if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) {
                $key = $oXML->CompleteSuggestion[$i]->suggestion['data'];

                if (!empty($key)) {
                    $searchsimbol = array(" ");
                    $zamenasimbol = array("+");
                    $keyword = str_replace($searchsimbol, $zamenasimbol, $key);

                    $massSuggestion[] = $keyword;
                } else {
                    break;
                }
            } else {
                break;
            }
        }


        for ($i = 0; $i <= 9; $i++) {
        if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) {
            $key = $aXML->CompleteSuggestion[$i]->suggestion['data'];

            $searchsimbol = array("$query vs ");
            $zamenasimbol = array("");
            $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key);

            $searchsimbol = array(" ");
            $zamenasimbol = array("+");
            $keywordVS = str_replace($searchsimbol, $zamenasimbol, $keywordVS);

            $massSuggestion[] = $keywordVS;
        } else {
            break;
        }
    }


    $massResults = [];
    foreach ($massSuggestion as $query) {
        // Отправляем запрос без 'vs'
        $urlNoVS = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=" . $query;
        $sXML = download_page($urlNoVS);
        $oXML = new \SimpleXMLElement(utf8_encode($sXML));

        // Обрабатываем результат без 'vs'
        for ($i = 0; $i <= 9; $i++) {
            // Проверяем существование свойства 'data' перед доступом к нему
            if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) {
                $key = $oXML->CompleteSuggestion[$i]->suggestion['data'];
                $massResults[] = $key;
            } else {
                // Если свойство 'data' не существует, прерываем цикл
                break;
            }
        }

        // Отправляем запрос с 'vs'
        $url = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=" . $query . "+vs";
        $tXML = download_page($url);
        $aXML = new \SimpleXMLElement(utf8_encode($tXML));

        // Обрабатываем результат с 'vs'
        for ($i = 0; $i <= 9; $i++) {
            // Проверяем существование свойства 'data' перед доступом к нему
            if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) {
                $key = $aXML->CompleteSuggestion[$i]->suggestion['data'];

                // Выполняем замены символов в строке $key
                $searchsimbol = array("$query vs ");
                $zamenasimbol = array("");
                $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key);

                $massResults[] = $keywordVS;
            } else {
                // Если свойство 'data' не существует, прерываем цикл
                break;
            }
        }
    }

    $massResults = array_merge($massSuggestion, $massResults);
    $massInVS = [];
    $massNOVS = [];
    foreach($massResults as $key) {
        $mystring = $key;
        $findme   = ' vs ';
        $pos = strpos($mystring, $findme);
        if($pos === false) {
            $massNOVS[] = $key;
        }
        else{
            $massInVS[] = $key;
        }
    }
//объединяем элементы массива в строку
    $strVS = implode(" vs ", $massInVS);
//создаем массив, через разделитель vs
    $massNewNoVS = explode(" vs ", $strVS);

    $resultMass = array_merge($massNOVS, $massNewNoVS);
    $resultMass = array_unique($resultMass);
    $ResultTotalMass = [];
    foreach($resultMass as $key) {
        $searchsimbol = array(" vs" , "vs ", " vs " );
        $zamenasimbol = array("", "", "");
        $keywordNoVS = str_replace($searchsimbol, $zamenasimbol, $key);
        if (mb_strlen($keywordNoVS, 'utf8') >= 18) {
            continue;
        }
        else {
            $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М',
                'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э',
                'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
                'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
            $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'J', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N',
                'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', '', 'E', 'Yu',
                'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'j', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',
                'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', '', 'e', 'yu', 'ya');

            $myZnak = replaceSimbolRu($keywordNoVS); //преобразование мягкого знака и других символов
            $keywordNoVS = str_replace($rus, $lat, $myZnak);
            $searchsimbol = array(" ", "  ");
            $zamenasimbol = array("", "");
            $ResultKey = str_replace($searchsimbol, $zamenasimbol, $keywordNoVS);
            $inDomain = preg_replace('/[^\p{L}0-9-\s ]/iu','', $ResultKey);
            if(empty($inDomain)) {
                continue;
            }
            else{
                $ResultTotalMass[] = $inDomain;
            }


        }
    }
    //выводим результат

    $ResultTotalMass = array_unique($ResultTotalMass);
    return $ResultTotalMass;


    }
}
            
Опубликовано вБлог
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x