怎么判断请求是蜘蛛还是恶意的(附爬虫IP段)
传统的判断是否是蜘蛛,是根据请求的user-agent
那蜘蛛的一般是:
function isRobot() {
// echo $agent= strtolower($_SERVER['HTTP_USER_AGENT']);
if (!empty($agent)) {
$spiderSite= array(
"TencentTraveler",
"Baiduspider",
"BaiduGame",
"Googlebot",
"msnbot",
"Sosospider+",
"Sogou web spider",
"ia_archiver",
"Yahoo! Slurp",
"YoudaoBot",
"Yahoo Slurp",
"MSNBot",
"Java (Often spam bot)",
"BaiDuSpider",
"Voila",
"Yandex bot",
"BSpider",
"twiceler",
"Sogou Spider",
"Speedy Spider",
"Google AdSense",
"Heritrix",
"Python-urllib",
"Alexa (IA Archiver)",
"Ask",
"Exabot",
"Custo",
"OutfoxBot/YodaoBot",
"yacy",
"SurveyBot",
"legs",
"lwp-trivial",
"Nutch",
"StackRambler",
"The web archive (IA Archiver)",
"Perl tool",
"MJ12bot",
"Netcraft",
"MSIECrawler",
"WGet tools",
"larbin",
"Fish search",
);
foreach($spiderSite as $val) {
$str = strtolower($val);
if (strpos($agent, $str) !== false) {
return true;
}
}
} else {
return false;
}
}
但是header是可以伪造的,所以并不保险。所以三叔整理IP段:
function isRobotIP($ip) {
// echo $agent= strtolower($_SERVER['HTTP_USER_AGENT']);
if (!empty($ip)) {
$spiderSite= array(
'123.125.',
'220.181.',
'121.14.',
'203.208.',
'210.72.',
'125.90.',
'218.0.',
'216.239.',
'64.233.',
'66.102.',
'66.249.',
'72.14.',
'202.101.',
'222.73.',
'66.249.65.',
'101.226.',
'180.153.',
'182.118.',
'61.55.',
'101.',
'123.126.',
'218.30.',
'61.135.',
'42.156.',
'42.120.',
'202.106.',
'202.108.',
'222.185.',
'65.54.',
'207.46.',
'207.68.',
'219.133.',
'202.96.',
'202.104.',
'219.142.',
'66.196.',
'68.142.',
'72.30.',
'74.6.',
'202.165.',
'202.160.',
);
foreach($spiderSite as $val) {
if (startWith($ip, $val)) {
return true;
}
}
} else {
return false;
}
}
这样就安全多了!!!
收起阅读 »千万不要使用别人分享的翻墙工具
哎,真是操碎了心.............
今天这个推文,和工具无关,只是出于对你们的负责,所以告知你们真实的计算机黑暗面。
群里很多小朋友都是涉世未深的孩子。我这个中年技术宅大叔真是操碎了心。
估计很多人还是在到处找免费的梯子。也有很多人分享梯子。
我们姑且不谈分享的人存在不存在恶意。
记住一句话:“天下没有免费的午餐”。
为什么要分享梯子给你?要知道搭建梯子服务器都是需要付费的。那为什么要给你白用?你们来告诉我个理由。
恐怕你们也想不出......
我来告诉你们一个非技术人员所不知道的事实:
连上我的VPN,你的一切都在我的眼皮下面。
所谓的梯子,就是从我的一台可以连接国内和国外的服务器上传输数据。比如登录,你发送数据到我的服务器上,我的服务器发送数据到国外网站上,国外网站返回数据给我,我再返回给你。画成图就是如下:
那如果我有恶意分享,我就可以在我的服务器上记录你所有的数据。你发送了什么数据(账号、密码),返回了什么数据(隐私照片、隐私关键参数)在我的服务器上都可以很方便的看到。比如下图:
可能你看不懂这图里密密麻麻的是什么。我来告诉你,这些都是你不想告诉别人的秘密。
更有的黑客甚至可以做的很便捷。你链接了我的梯子,你登录账户密码,我的服务器就会给我发邮件。
如上图:你访问的地址,你登录的账号,你的密码都在邮件里。
ok ok anyway.
三叔你婆婆妈妈说那么多,不就是说不要输入账户密码嘛。我不输入的,我扫码,够安全吧!
真的安全么???你确定真的安全么???
你太天真了。
看到第一张图里有个数据叫cookie么?你扫码登录或输入密码登录成功后都会返回这么一个重要内容。我只要拿着这个数据,都不需要你的密码或你扫码我就可以操作你的账号,获取你的数据。
拿着这个cookie我可以做哪些操作呢?我就拿国外某社交平台举例吧。我拿到你的cookie里的token等参数可以做如下操作,记住了,现在我就相当于是你:
获取你的好友
给你的好友推送骗子消息,比如你被车撞了,在医院,快打钱。
可以获取你上锁的相册。
可以获取你所有的访客
可以用你的名义发邮件,发件人是你的邮箱
可以看你所有的日志
等等等等
只要你能做的,我都能做到!
所以,千万别用别人的梯子,这就相当于把你所有访问的数据都交给对方。要不然你以为你身边中毒的人是怎么给你发送骗子消息的!
wecenter开启静态化代码
说道网站优化,提高网站速度,需要从很多地方出发。
比如wecenter,它的查询太多,查询出来的字段也非常多,这其实是很占效率的。
但是我们没有办法改变它,毕竟作者这么写了,就算你优化完,升级后还是会回复的。
所以我们要做的就是如何减少数据库查询。
那在编程语言里来说,减少数据库查询,那肯定就是用缓存。
但是并不是所有人的服务器或空间都支持内存缓存的,所以我们这里用纯静态化缓存。这也有助于CDN加速。比如如下图:
废话不多说,我们开始教大家如何编写这段代码。
打开 / system/function.app.php
追加方法:
function createHtmlFile($FilePath,$Content){
// 去掉文件名中的一些非法符号
$FilePath = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', $FilePath);
$dir_array = explode("/",$FilePath);
//split the FilePath
$max_index = count($dir_array) ;
$i = 0;
$path = $_SERVER['DOCUMENT_ROOT']."/"; // 获取网站的根目录,比如/home/username/
while( $i < $max_index ){
$path .= "/".$dir_array[$i]; // 把子目录一级一级加到路径上
$path = str_replace("//","/",$path); // 如果有//则替换成/
if( $dir_array[$i] == "" ){ // 如果这目录值为空则跳过去,这个判断放在循环的最前面可能更合适
$i ++ ;
continue;
}
// 上面的代码似乎可以写得更精练
if( substr_count($path, '&') ) return true; // 如果路径中有&符号,这不好处理,不管了
if( substr_count($path, '?') ) return true; // 有?也不管了
if( !substr_count($path, '.htm') ){ // 如果不包含.htm,原来传了个路径进来
if( !file_exists( $path ) ){
@mkdir( $path, 0777);
@chmod( $path, 0777 );
}
}
$i ++; // 这个搞完,继续
}
if( is_dir( $path ) ){ // 如果上面折腾完后,发现是个目录,那就是说要创建index.html
$path = $path."/index.html";
}
// 如果html页面没创建完整,那还是不管算了
if ( !strstr( strtolower($Content), '</html>' ) ) return;
//if sql error ignore...
$fp = @fopen( $path , "w+" );
if( $fp ){ // 说明有权限写
@chmod($path, 0666 ) ; // 给文件先赋个权限
@flock($fp ,LOCK_EX ); // 锁定
// write the file。
fwrite( $fp , $Content );// 写静态文件内容
@flock($fp, LOCK_UN); // 解锁
fclose($fp); // 完事
}
}
第二步打开:/app/article/main.php
在index_action方法的最后
将
TPL::output('article/index');
修改为:
$content = TPL::output('article/index',false);
//这里的/a/ 是指在网站下面生成一个a的文件夹,然后生成静态文件,具体叫啥自己修改
createHtmlFile('/a/'.$article_info['id'].'.html',$content);
echo $content;
wecenter下使用代码高亮
近期在使用WeCenter时发现,粘贴的代码发布后整个样式都变了,并且不能高亮显示;作为看惯了编辑器代码样式的程序员来说,实在不忍直视;于是就自己整了下;
1、所需插件
highlight.js插件,可到官网进行下载:传送门
选择完要高亮的语言,点击这个Download
即可下载
2、将下载的插件放入static下的一个文件夹内
3、view/default/global/header_meta.tpl.htm 中加入插件地址调用即可
<link href="/static/hightlight/styles/monokai-sublime.css" rel="stylesheet">
<script src="/static/hightlight/highlight.pack.js"></script>
<script>
document.addEventListener('DOMContentLoaded', (event) => {
document.querySelectorAll('pre').forEach((block) => {
hljs.highlightBlock(block);
});
});
</script>
原文转自:http://www.baophp.cn/question/detail-2.html
网站如何向百度提交新的网页
作为国内的网站,一般新站的网站基本来自于百度。
如何提高百度收录就成了所有站长所关心的事。当然无论新站长还是老站长都是。
所以如何提交新的内容给百度就成了大家最想知道的事
咳咳咳。
基本上提交新的url给百度有四种方式,下面我们来说一下这四个方式。
他们的功能入口是:
网址:https://ziyuan.baidu.com/linksubmit/
在左手边的连接提交
功能里
这个功能使用使用说明如下:
1. 链接提交工具是网站主动向百度搜索推送数据的工具,本工具可缩短爬虫发现网站链接时间,网站时效性内容建议使用链接提交工具,实时向搜索推送数据。本工具可加快爬虫抓取速度,无法解决网站内容是否收录问题
2. 百度搜索资源平台为站长提供链接提交通道,您可以提交想被百度收录的链接,百度搜索引擎会按照标准处理,但不保证一定能够收录您提交的链接。
现在我们说说这四个方式:
提交方式
手工提交
请在输入框中填写当前选择站点的链接;如需提交其他验证站点链接,请选择对应的站点
您每次最多可提交20条链接,每行一条
仅支持页面对应链接的提交,不支持sitemap形式的文件提交
如果需要提交非验证本站链接,请点击提交非验证站点链接
下面是三种主动提交的方式:
主动推送
由网站服务端发起,可以获取推送的结果。需要Token
推送接口
接口调用地址:http://data.zz.baidu.com/urls?site=www.sanshu.cn&token=02bsKICm4Rl6EDLn
参数名称是否必选参数类型说明
site是string在搜索资源平台验证的站点,比如www.example.com
token是string在搜索资源平台申请的推送用的准入密钥
代码在网页了有,php、ruby都有
自动推送
自动推送是百度搜索资源平台为提高站点新增网页发现速度推出的工具,安装自动推送JS代码的网页,在页面被访问时,页面URL将立即被推送给百度。
这个功能需要在需要推送的网页里增加js代码,这样用户访问的时候就会推送。
也就是这段代码:
服务对象及原理
JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用。
安装代码的页面在任意平台(浏览器、微信、微博)被加载时,页面链接会被第一时间推送给百度,从而提高站点新内容的发现速度。
sitemap文件提交
需要在网页的目录下,一般在根目录下生成符合sitemap规范的XML内容。
格式如下:
urlset是一个数组,里面是多个url节点。这个url节点就是网页的基本信息。
这样就可以在网站下生成xml,比如 http://www.sanshu.cn/sitemap.xml
然后将这个内容提交给百度即可,蜘蛛会定时来抓取网页。
最后我们总结下如何选择他们:
如何选择链接提交方式
主动推送:最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
sitemap:您可以定期将网站链接放到Sitemap中,然后将Sitemap提交给百度。百度会周期性的抓取检查您提交的Sitemap,对其中的链接进行处理,但收录速度慢于主动推送。
手工提交:如果您不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。
自动推送:是轻量级链接提交组件,将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。
最后开放一个全sitemap提交入口大家用用:
http://www.sanshu.cn/seotools/sitemap/
收起阅读 »wecenter中修改ueditor编辑器支持水印
文章的灵感来自:https://www.cnblogs.com/boats/p/8110135.html
只支持ueditor水印。
水印图片放在:网站目录/plugins/wc_editor/static/ueditor/ 目录下。
取名为 watermark.png 不要乱改名字,否则需要改代码。
效果如:
下载插件如:
http://wenda.wecenter.com/article/1706?notification_id=327761
插件放在 网站目录/plugins/下面
百度站长平台新增网站的方法
第一步打开网址:
https://ziyuan.baidu.com/site/index
可能需要自己注册下的。
第二步新增网站:
点击左边的【站长管理】
进入新增网站界面:
至于协议头,你如果有https协议,你可以选择。否则就选择http
第三步校验:
第四步 选择网站领域:
因为三叔的站是SEO博客,所以选择了【信息技术】和【工具服务及在线查询】
第五步 校验域名所有权:
这一步主要是向百度证明,这个网站是你的。
主要有三种方法。
文件验证,是指下载一个文件到你的网站根目录。
HTML标签验证 只需要加一段META标签到你的head标签里
CNAME 是指去域名解析那追加一条txt。
推荐还是CNAME。
最后 点击完成校验:
完成上一步后,等个20秒再点击,给域名解析一点操作生效时间
收起阅读 »Google广告联盟的PIN码
为了确保您的帐号安全无虞,在向您发放任何付款之前,Google 会先要求您验证地址。为此,我们会向您的付款地址邮寄一个个人识别码(PIN 码)。然后,您需要将该 PIN 码输入到您的帐号中。
我的 PIN 码何时能够寄达?
在您的帐户余额达到验证最低限额后的几天内,我们会打印您的 PIN 码,并通过平邮方式邮寄给您。PIN 码通常会在 2 至 4 周内寄达,但根据您所在的位置也可能需要更长时间。
如果我们要求您验证自己的身份,那么在您成功完成身份验证之前,我们将不会向您寄送 PIN 码。
我需要在什么时候输入 PIN 码?
自第一个 PIN 码生成之日算起,您可以在 4 个月内将该号码输入帐号。如果您在 4 个月后还未输入该码,我们会停止在您的页面上展示广告。
在何处输入 PIN 码?
收到 PIN 码后,请将其输入到 AdSense 首页上的 PIN 码验证卡片中。了解如何输入 PIN 码。
如果没有收到 PIN 码,我该怎么办?
我们知道,PIN 码可能会出现无法寄达的情况。正因为如此,我们允许您在没有收到 PIN 码的情况下,再申请一个 PIN 码加以替代。
如果我的地址是错的,该怎么办?
如果您的地址有误,或者您搬到了新地址,您需要按照这些说明更改帐号中的付款地址。然后,您便可以申请新的 PIN 码了。
我能否发一份官方出具的身份证明文件或我的国内帐单来证明这是我的地址?
这取决于您所在的地理位置。我们接受某些地区的用户向我们发送一份官方文件作为地址证明。如果您符合条件,就会在您 AdSense 帐号的首页上看到一条通知,其中会说明如何向我们发送您的官方文件。
我想更改 AdSense 帐号中的国家/地区设置。我是否需要再次使用 PIN 码验证我的地址?
需要。如果您之前使用 PIN 码验证过您的地址,但后来更改了国家/地区,那么付款将会暂停,直到您使用 PIN 码完成新地址的验证为止。
如果您在验证 PIN 码时遇到问题,请试试 PIN 码问题排查工具。
收起阅读 »