From 5baebea9d5b8ce54fb046d2a23277071dd142510 Mon Sep 17 00:00:00 2001 From: make Date: Tue, 8 Apr 2025 20:07:23 +0800 Subject: [PATCH] debug --- code/app/common.php | 60 -------- .../home/view/kuangyu/Pc/Public/footer.html | 2 +- code/app/home/view/kuangyu/Pc/index.html | 9 +- code/app/home/view/kuangyu/baseH5.html | 3 + code/app/home/view/kuangyu/basePc.html | 7 +- .../view/kuangyu/推广SEO过程设计记录/index.md | 3 +- .../kuangyu/推广SEO过程设计记录/干扰吗设计.md | 38 +++++ code/app/model/GanRaoMaModel.php | 136 ++++++++++++++++-- code/extend/template/taglib/Site.php | 8 +- doc/TemplateTag.md | 2 +- 10 files changed, 186 insertions(+), 82 deletions(-) create mode 100644 code/app/home/view/kuangyu/推广SEO过程设计记录/干扰吗设计.md diff --git a/code/app/common.php b/code/app/common.php index 3c70743..8c4f07a 100644 --- a/code/app/common.php +++ b/code/app/common.php @@ -494,66 +494,6 @@ namespace { } } - /** - * // 调用函数生成随机 HTML - * generateRandomHTML(10, 30); // 随机生成 10~30 个标签 - * - * @param integer $minTags - * @param integer $maxTags - * @return void - */ - function generateRandomHTML($minTags = 5, $maxTags = 20) - { - // 可随机生成的标签字符集 - $tagCharset = 'abcdefghijklmnopqrstuvwxyz'; - - // 属性的随机字符集 - $attrCharset = 'abcdefghijklmnopqrstuvwxyz'; - - // 可生成的属性名称 - $possibleAttributes = ['draggable', 'date-time', 'lang', 'id', 'dir', 'class']; - - // 标签的最大长度和属性值的最大长度 - $tagMaxLength = 8; // 标签名的最大长度 - $attrValueMaxLength = 10; // 属性值的最大长度 - - // 随机生成的标签数量 - $numTags = rand($minTags, $maxTags); - - $htmlResult = ''; - - for ($i = 0; $i < $numTags; $i++) { - // 随机生成标签名称 - $tagName = randomString(rand(3, $tagMaxLength), $tagCharset); - - // 随机生成属性数量 - $numAttributes = rand(1, 3); // 每个标签随机生成 1~3 个属性 - $attributes = ''; - - for ($j = 0; $j < $numAttributes; $j++) { - // 随机选择属性名称 - $attrName = $possibleAttributes[array_rand($possibleAttributes)]; - // 随机生成属性值 - $attrValue = randomString(rand(3, $attrValueMaxLength), $attrCharset); - $attributes .= " {$attrName}=\"{$attrValue}\""; - } - - // 拼接随机标签 - $htmlResult .= "<{$tagName}{$attributes}>\n"; - } - - return $htmlResult; - } - // 辅助函数:生成随机字符串 - function randomString($length = 8, $charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') - { - $charsetLength = strlen($charset); - $randomString = ''; - for ($i = 0; $i < $length; $i++) { - $randomString .= $charset[rand(0, $charsetLength - 1)]; - } - return $randomString; - } // 随机颜色生成函数 function getRandomColor() diff --git a/code/app/home/view/kuangyu/Pc/Public/footer.html b/code/app/home/view/kuangyu/Pc/Public/footer.html index 084458c..3231577 100644 --- a/code/app/home/view/kuangyu/Pc/Public/footer.html +++ b/code/app/home/view/kuangyu/Pc/Public/footer.html @@ -3,7 +3,7 @@

友情链接

diff --git a/code/app/home/view/kuangyu/Pc/index.html b/code/app/home/view/kuangyu/Pc/index.html index 3b0a36b..f200ace 100644 --- a/code/app/home/view/kuangyu/Pc/index.html +++ b/code/app/home/view/kuangyu/Pc/index.html @@ -33,13 +33,18 @@
    {volist name="arrRecommendSerializationNovel" id="Novel" key="key"} - {if $key < 6} {include file="Pc/Public/swiperListText" /} {/if} + {if $key < 6} + {include file="Pc/Public/swiperListText" /} + {/if} {/volist}
diff --git a/code/app/home/view/kuangyu/baseH5.html b/code/app/home/view/kuangyu/baseH5.html index f3c2c7f..d0f9149 100644 --- a/code/app/home/view/kuangyu/baseH5.html +++ b/code/app/home/view/kuangyu/baseH5.html @@ -28,6 +28,7 @@ + {site:grm domain="$DomainModel->d_domain" code="kuangyu-index" line="31" diff="0" start="10" end="30" type="2" /}
{block name="logo-html"}{/block} @@ -117,6 +118,8 @@ {$DomainModel->d_statis|raw} + + {site:grm domain="$DomainModel->d_domain" code="kuangyu-index" line="122" diff="0" start="10" end="30" type="2" /} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/basePc.html b/code/app/home/view/kuangyu/basePc.html index 9785f8c..162f814 100644 --- a/code/app/home/view/kuangyu/basePc.html +++ b/code/app/home/view/kuangyu/basePc.html @@ -24,6 +24,7 @@ + {site:grm domain="$DomainModel->d_domain" code="kuangyu-pc-index" line="27" diff="0" start="10" end="30" index="1" type="2" /}
@@ -89,10 +90,12 @@ {site:cfg code="PUBLIC_TONGJI_CODE" encode="false"/} - + {$DomainModel->d_statis|raw} - + + {site:grm domain="$DomainModel->d_domain" code="kuangyu-pc-index" line="27" diff="0" start="10" end="30" index="1" type="2" /} + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/推广SEO过程设计记录/index.md b/code/app/home/view/kuangyu/推广SEO过程设计记录/index.md index 07262ed..f47403c 100644 --- a/code/app/home/view/kuangyu/推广SEO过程设计记录/index.md +++ b/code/app/home/view/kuangyu/推广SEO过程设计记录/index.md @@ -51,4 +51,5 @@ pc-首页 body 中间 选择 5-10行 , a 标签前面 生成一个干扰码 5.文章 板块 6.地图生成 - 7.收录推送 \ No newline at end of file + 7.收录推送 + 8.友情链接 \ No newline at end of file diff --git a/code/app/home/view/kuangyu/推广SEO过程设计记录/干扰吗设计.md b/code/app/home/view/kuangyu/推广SEO过程设计记录/干扰吗设计.md new file mode 100644 index 0000000..491b3d2 --- /dev/null +++ b/code/app/home/view/kuangyu/推广SEO过程设计记录/干扰吗设计.md @@ -0,0 +1,38 @@ +在讨论这个问题时,我们需要明确一点:向 HTML 中插入带有随机 ID、类名或隐藏内容的标签(如 ``、`
`、`` 等 `style="display:none;"` 的元素),其目的是否是为了欺骗搜索引擎(如 Google 的爬虫/蜘蛛),让其认为页面内容是原创的,而不是伪原创或复制内容。 + +### 这种做法的效果与风险 +1. **搜索引擎蜘蛛的判断机制** + - 现代搜索引擎(如 Google、Bing)使用复杂的算法来判断页面内容的原创性。它们不仅分析可见内容,还会检查 HTML 结构、元数据、语义、链接模式,甚至用户行为信号(如停留时间、跳出率)。 + - 隐藏内容(`display:none;`)通常会被搜索引擎忽略,因为它们认为这些内容对用户无意义。如果大量使用隐藏标签填充无意义或随机字符串,反而可能被视为“内容填充”(keyword stuffing)或“隐藏文本”(hidden text),这是违反搜索引擎优化(SEO)规则的行为。 + +2. **伪原创的检测** + - 搜索引擎不会仅仅因为你添加了一些随机标签就认为内容是原创的。它们更关注文本的语义相似性、句子结构、词频分布等。 + - 如果你的页面主要内容(比如 `

` 标签中的文章)是从其他地方复制的,即使插入了这些随机标签,搜索引擎依然可以通过比对主要内容判断出伪原创。 + +3. **潜在风险** + - **惩罚风险**:Google 的《网站管理员指南》中明确禁止使用“隐藏文本或链接”来操纵排名。如果被检测到这种行为,你的网站可能会被降权甚至从索引中移除。 + - **用户体验**:虽然这些标签对用户不可见,但如果代码过于冗余,可能增加页面加载时间,间接影响 SEO。 + +### 这种做法是否“有助于”伪原创? +- **短期效果**:理论上,插入随机标签可能会让页面的 HTML 结构看起来与原始页面有所不同,稍微增加伪原创的“伪装性”。但这只是表面功夫,搜索引擎的算法早已超越了简单对比 HTML 结构。 +- **长期效果**:几乎没有帮助,反而可能引发负面后果。搜索引擎更倾向于分析内容的实际价值,而不是这些“噪声”标签。 + +### 更好的伪原创策略(合法且有效) +如果你确实想通过修改内容来提高原创性,可以尝试以下方法: +1. **重写文本**:用自己的语言重新组织句子,改变表达方式。 +2. **添加独特内容**:插入原创的评论、分析或数据。 +3. **优化结构**:调整标题、段落布局,添加图片或多媒体(配上原创描述)。 +4. **合法引用**:如果引用他人内容,标注来源,避免被视为抄袭。 + +### 结论 +插入这些随机标签并不会真正帮助蜘蛛判断内容是伪原创,反而可能被视为作弊行为。如果你是为了 SEO 或内容优化,建议把精力放在提升内容的实际质量和独特性上,而不是依赖这种技术手段。有没有什么具体场景困扰着你?我可以进一步帮你分析优化方案! + + +对比分析 +维度 格式 1(标准 HTML) 格式 2(自定义标签) +结构复杂性 高(嵌套、多标签) 低(单一标签) +伪装性 较强(像合法 HTML) 较弱(明显异常) +独特性 高(多属性组合) 中等(依赖标签名和属性) +生成难度 较高(需维护嵌套结构) 较低(简单随机生成) +体积与性能 较大(可能影响加载) 较小(轻量) +检测风险 中等(隐藏内容可能被怀疑) 较高(非标准标签易暴露) \ No newline at end of file diff --git a/code/app/model/GanRaoMaModel.php b/code/app/model/GanRaoMaModel.php index 940c757..fa16573 100644 --- a/code/app/model/GanRaoMaModel.php +++ b/code/app/model/GanRaoMaModel.php @@ -22,7 +22,21 @@ class GanRaoMaModel extends MongoModel */ protected $strCollection = 'gan_rao_ma'; + + /** + * 可选属性 + */ + const POSSIBLE_ATTRIBUTES = [ + 'draggable', 'date-time', 'lang', 'id', 'dir', 'class' + ]; + /** + * 配置常量 + */ + const TAG_MAX_LENGTH = 8; + const ATTR_VALUE_MAX_LENGTH = 10; + const ATTR_MIN_COUNT = 1; + const ATTR_MAX_COUNT = 3; /** * Undocumented variable @@ -74,6 +88,80 @@ class GanRaoMaModel extends MongoModel return $result; } + /** + * Undocumented function + * 随机生成自定义标签-干扰码 + * + * @param integer $intMinTags + * @param integer $intMaxTags + * @return string + */ + static public function generateRandomCustomizeHtml(int $intMinTags = 5, int $intMaxTags = 20): string + { + + // 随机标签数量 + $intNumTags = rand($intMinTags, $intMaxTags); + $strHtmlResult = ''; + + for ($i = 0; $i < $intNumTags; $i++) { + // 生成随机标签名 + $strTagName = self::generateRandomString(rand(3, self::TAG_MAX_LENGTH), self::LETTERS); + + // 随机属性数量 + $intNumAttributes = rand(self::ATTR_MIN_COUNT, self::ATTR_MAX_COUNT); + $strAttributes = self::generateAttributes($intNumAttributes); + + // 拼接标签 + $strHtmlResult .= "<{$strTagName}{$strAttributes}>\n"; + + } + + return $strHtmlResult; + } + + /** + * Undocumented function + * 生成自定义属性 + * + * @param integer $intTotal + * @return string + */ + static public function generateAttributes(int $intTotal): string + { + $strAttributes = ''; + $arrUsedAttributes = array_rand(array_flip(self::POSSIBLE_ATTRIBUTES), $intTotal); + + foreach ((array) $arrUsedAttributes as $strAttrName) { + $strAttrValue = self::generateRandomString( + rand(3, self::ATTR_VALUE_MAX_LENGTH), + self::CHARS + ); + $strAttributes .= " {$strAttrName}=\"{$strAttrValue}\""; + } + + return $strAttributes; + } + + /** + * Undocumented function + * 生成随机字符串 + * + * @param integer $length + * @param string $strCharset + * @return string + */ + static public function generateRandomString(int $length, string $strCharset): string + { + $intCharsetLength = strlen($strCharset); + $strRandomString = ''; + + for ($i = 0; $i < $length; $i++) { + $strRandomString .= $strCharset[rand(0, $intCharsetLength - 1)]; + } + + return $strRandomString; + } + /** @@ -85,10 +173,13 @@ class GanRaoMaModel extends MongoModel * @param string $strDifference 差异 * @param int $intStartNumber 生成标签,随机起始位置 随机生成(10-20)个标签 10 * @param int $intEndNumber 生成标签,随机结束位置 随机生成(10-20)个标签 20 + * @param int $intIndex 把标签转成数组,这个是索引,根据索引取哪一行标签 + * @param int $intType 生成标签类型: 1.标准html标签,2.自定义标签 * @return string */ - static public function getGrmCode($strDomain, $strPageCode, $intLine, $strDifference, $intStartNumber, $intEndNumber): string + static public function getGrmCode($strDomain, $strPageCode, $intLine, $strDifference, $intStartNumber, $intEndNumber,$intIndex,$intType): string { + $arrFilter = [ 'grm_domain' => (string) $strDomain, 'grm_page_code' => (string) $strPageCode, @@ -96,24 +187,43 @@ class GanRaoMaModel extends MongoModel 'grm_page_diff' => (string) $strDifference, ]; $arrGrm = self::getInstance()->getOne($arrFilter); - + if (empty($arrGrm)) { - $intNum = mt_rand($intStartNumber, $intEndNumber); - $arrGrmCode = self::$arrSelfClosing; - shuffle($arrGrmCode); - $arrGrmCode = array_slice($arrGrmCode, 0, $intNum); - $strGrmCode = implode('', $arrGrmCode); - $intRandNum = substr_count($strGrmCode, '%s'); - $arrRandStr = self::generateRandomStrings($intRandNum); - $strGrmCode = sprintf($strGrmCode, ...$arrRandStr); - + if($intType == 1){ + $intNum = mt_rand($intStartNumber, $intEndNumber); + $arrGrmCode = self::$arrSelfClosing; + shuffle($arrGrmCode); + $arrGrmCode = array_slice($arrGrmCode, 0, $intNum); + $strGrmCode = implode('', $arrGrmCode); + $intRandNum = substr_count($strGrmCode, '%s'); + $arrRandStr = self::generateRandomStrings($intRandNum); + $strGrmCode = sprintf($strGrmCode, ...$arrRandStr); + }else{ + $strGrmCode = self::generateRandomCustomizeHtml($intStartNumber, $intEndNumber); + } $arrData = $arrFilter; - $arrData['grm_code'] = $strGrmCode; + $arrData['grm_code'] = $strGrmCode; self::getInstance()->insert($arrData); } else { $strGrmCode = $arrGrm['grm_code']; } - + // $arrGrmCode = self::splitTagsToArray($strGrmCode); + // $strGrmCode = $arrGrmCode[$intIndex]; + // echo $intIndex; return $strGrmCode; } + + static public function splitTagsToArray(string $htmlTags): array + { + // 按换行符分割,兼容不同系统 + $tagsArray = preg_split('/\r\n|\n|\r/', $htmlTags); + + // 去除空白行并清理首尾空格 + $tagsArray = array_filter(array_map('trim', $tagsArray), function($tag) { + return !empty($tag); + }); + + // 重置索引 + return array_values($tagsArray); + } } diff --git a/code/extend/template/taglib/Site.php b/code/extend/template/taglib/Site.php index d127e6d..daab425 100644 --- a/code/extend/template/taglib/Site.php +++ b/code/extend/template/taglib/Site.php @@ -10,7 +10,7 @@ class Site extends TagLib 'cfg' => ['attr' => 'code,encode', 'close' => 0], 'wz' => ['attr' => 'wz', 'close' => 0], 'nurl' => ['attr' => 'n_id', 'close' => 0], - 'grm' => ['attr' => 'domain,code,line,diff', 'close' => 0], + 'grm' => ['attr' => 'domain,code,line,diff,start,end,index,type', 'close' => 0], ]; @@ -95,10 +95,14 @@ EOD; $strPageCode = isset($tag['code']) ? $tag['code'] : ''; $intLine = isset($tag['line']) ? $tag['line'] : 0; $strDifference = isset($tag['diff']) ? $tag['diff'] : ''; + $intStartNumber = isset($tag['start']) ? (int)$tag['start'] : 10; + $intEndNumber = isset($tag['end']) ? (int)$tag['end'] : 30; + $intIndex = isset($tag['index']) ? (int)$tag['index'] : 10; + $intType = isset($tag['type']) ? (int)$tag['type'] : 2; $strParse = << EOD; diff --git a/doc/TemplateTag.md b/doc/TemplateTag.md index 73ef3e2..37aa82a 100644 --- a/doc/TemplateTag.md +++ b/doc/TemplateTag.md @@ -20,7 +20,7 @@ {site:wz wz="保存永久访问二维码" /} # 干扰码 -{site:grm domain="Request->DomainModel->d_domain" code="kuangyu-pc-index" line="50" diff="0"/} +{site:grm domain="Request->DomainModel->d_domain" code="kuangyu-pc-index" line="50" diff="0" start="5" end="20" type="2" /} # 图片加密