debug
This commit is contained in:
@@ -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}></{$tagName}>\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()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="tWrap">
|
||||
<p>友情链接</p>
|
||||
<ul>
|
||||
<li><a href="http://www.kyxscms.com" >狂雨小说cms</a></li>
|
||||
<!-- <li><a href="http://www.kyxscms.com" >狂雨小说cms</a></li> -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -33,13 +33,18 @@
|
||||
<div class="tjw">
|
||||
<ul id="mod_index_lb_nv_pic">
|
||||
{volist name="arrRecommendSerializationNovel" id="Novel" key="key"}
|
||||
{if $key < 6} {include file="Pc/Public/swiperListImg" /} {/if}
|
||||
{if $key < 6}
|
||||
{site:grm domain="$DomainModel->d_domain" code="kuangyu-pc-index" line="37" diff="$key" start="1" end="1" index="$key+10" type="2" /}
|
||||
{include file="Pc/Public/swiperListImg" /}
|
||||
{/if}
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
<ol id="btn_index_lb_nv">
|
||||
{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}
|
||||
</ol>
|
||||
<div class="book_inf" id="mod_index_lb_nv_txt">
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
</head>
|
||||
|
||||
<body class="{block name='body-class'}{/block}" id="{block name='body-id'}{/block}">
|
||||
{site:grm domain="$DomainModel->d_domain" code="kuangyu-index" line="31" diff="0" start="10" end="30" type="2" /}
|
||||
<div class="header">
|
||||
{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" /}
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -24,6 +24,7 @@
|
||||
</head>
|
||||
|
||||
<body class="{block name='body-class'}{/block}" id="{block name='body-id'}{/block}">
|
||||
{site:grm domain="$DomainModel->d_domain" code="kuangyu-pc-index" line="27" diff="0" start="10" end="30" index="1" type="2" /}
|
||||
<!--公共头部 开始-->
|
||||
<div class="header">
|
||||
<div class="headWrap">
|
||||
@@ -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" /}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -51,4 +51,5 @@ pc-首页
|
||||
body 中间 选择 5-10行 , a 标签前面 生成一个干扰码
|
||||
5.文章 板块
|
||||
6.地图生成
|
||||
7.收录推送
|
||||
7.收录推送
|
||||
8.友情链接
|
||||
38
code/app/home/view/kuangyu/推广SEO过程设计记录/干扰吗设计.md
Normal file
38
code/app/home/view/kuangyu/推广SEO过程设计记录/干扰吗设计.md
Normal file
@@ -0,0 +1,38 @@
|
||||
在讨论这个问题时,我们需要明确一点:向 HTML 中插入带有随机 ID、类名或隐藏内容的标签(如 `<strong>`、`<div>`、`<span>` 等 `style="display:none;"` 的元素),其目的是否是为了欺骗搜索引擎(如 Google 的爬虫/蜘蛛),让其认为页面内容是原创的,而不是伪原创或复制内容。
|
||||
|
||||
### 这种做法的效果与风险
|
||||
1. **搜索引擎蜘蛛的判断机制**
|
||||
- 现代搜索引擎(如 Google、Bing)使用复杂的算法来判断页面内容的原创性。它们不仅分析可见内容,还会检查 HTML 结构、元数据、语义、链接模式,甚至用户行为信号(如停留时间、跳出率)。
|
||||
- 隐藏内容(`display:none;`)通常会被搜索引擎忽略,因为它们认为这些内容对用户无意义。如果大量使用隐藏标签填充无意义或随机字符串,反而可能被视为“内容填充”(keyword stuffing)或“隐藏文本”(hidden text),这是违反搜索引擎优化(SEO)规则的行为。
|
||||
|
||||
2. **伪原创的检测**
|
||||
- 搜索引擎不会仅仅因为你添加了一些随机标签就认为内容是原创的。它们更关注文本的语义相似性、句子结构、词频分布等。
|
||||
- 如果你的页面主要内容(比如 `<p>` 标签中的文章)是从其他地方复制的,即使插入了这些随机标签,搜索引擎依然可以通过比对主要内容判断出伪原创。
|
||||
|
||||
3. **潜在风险**
|
||||
- **惩罚风险**:Google 的《网站管理员指南》中明确禁止使用“隐藏文本或链接”来操纵排名。如果被检测到这种行为,你的网站可能会被降权甚至从索引中移除。
|
||||
- **用户体验**:虽然这些标签对用户不可见,但如果代码过于冗余,可能增加页面加载时间,间接影响 SEO。
|
||||
|
||||
### 这种做法是否“有助于”伪原创?
|
||||
- **短期效果**:理论上,插入随机标签可能会让页面的 HTML 结构看起来与原始页面有所不同,稍微增加伪原创的“伪装性”。但这只是表面功夫,搜索引擎的算法早已超越了简单对比 HTML 结构。
|
||||
- **长期效果**:几乎没有帮助,反而可能引发负面后果。搜索引擎更倾向于分析内容的实际价值,而不是这些“噪声”标签。
|
||||
|
||||
### 更好的伪原创策略(合法且有效)
|
||||
如果你确实想通过修改内容来提高原创性,可以尝试以下方法:
|
||||
1. **重写文本**:用自己的语言重新组织句子,改变表达方式。
|
||||
2. **添加独特内容**:插入原创的评论、分析或数据。
|
||||
3. **优化结构**:调整标题、段落布局,添加图片或多媒体(配上原创描述)。
|
||||
4. **合法引用**:如果引用他人内容,标注来源,避免被视为抄袭。
|
||||
|
||||
### 结论
|
||||
插入这些随机标签并不会真正帮助蜘蛛判断内容是伪原创,反而可能被视为作弊行为。如果你是为了 SEO 或内容优化,建议把精力放在提升内容的实际质量和独特性上,而不是依赖这种技术手段。有没有什么具体场景困扰着你?我可以进一步帮你分析优化方案!
|
||||
|
||||
|
||||
对比分析
|
||||
维度 格式 1(标准 HTML) 格式 2(自定义标签)
|
||||
结构复杂性 高(嵌套、多标签) 低(单一标签)
|
||||
伪装性 较强(像合法 HTML) 较弱(明显异常)
|
||||
独特性 高(多属性组合) 中等(依赖标签名和属性)
|
||||
生成难度 较高(需维护嵌套结构) 较低(简单随机生成)
|
||||
体积与性能 较大(可能影响加载) 较小(轻量)
|
||||
检测风险 中等(隐藏内容可能被怀疑) 较高(非标准标签易暴露)
|
||||
@@ -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}></{$strTagName}>\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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
<?php
|
||||
\$strUrl = \\app\\model\\GanRaoMaModel::getGrmCode("{$strDomain}","{$strPageCode}","{$intLine}","{$strDifference}");
|
||||
\$strUrl = \\app\\model\\GanRaoMaModel::getGrmCode("{$strDomain}","{$strPageCode}","{$intLine}","{$strDifference}",{$intStartNumber},{$intEndNumber},{$intIndex},{$intType});
|
||||
echo \$strUrl;
|
||||
?>
|
||||
EOD;
|
||||
|
||||
@@ -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" /}
|
||||
|
||||
|
||||
# 图片加密
|
||||
|
||||
Reference in New Issue
Block a user