网站建设

分享张戈博客自用的仿百度打赏功能

分享前,我必须承认文章打赏功能,在大部分网站只是一个鸡肋、花哨的功能,食之无味,弃之可惜。但是,大部分站长为了丰富网站的各个方面,也是乐此不疲的折腾了这个然并卵的功能。 好了,我先不管它有没有用,先分享出来,想必还是有不少站长乐于折腾的。 一、百度打赏 经常关注百度站长平台的朋友应该都知道百度推出过一个打赏的组件,目测主要是为了推广百度钱包,直到现在还处于内侧状态。张戈博客试着申请了下就通过了。 它的原理很简单,就是在百度站长那设定打赏二维码图片(或百度钱包账号),然后在网站插入一段js代码,js会在页面生成一个赏的按钮,点击后就弹出带有二维码的打赏页面了。 张戈博客还是在使用https的时候就用过这个玩意,还利用七牛对百度打赏进行了https化。但是有2个弊端,驱使着我自己DIY一个: 1、使用百度打赏之后,打开博客网页经常会弹出一个连接超时的提示,甚是烦人; 2、百度打赏由于是实时调用百度在线资源,感觉点击后延迟很明显,给人迟钝的感觉。 二、DIY版本 知道了它的原理,自己就可以DIY一个更丰富、灵活的打赏组件了! Ps:具体效果以及和原版打赏的对比,可点击本文底部的打赏按钮和本站【关于页面】的打赏按钮。 ①、js代码 复制以上代码,将代码中的如下地址替换你对应的付款二维码图片,然后保存为js文件,比如ds.js: Ps:怎么制作或获取这些二维码图片,我就不啰嗦了,相信大家都搞的定。 最后上传到网站存放js文件的目录,比如WordPress主题目录,最终网站前台可以访问到这个js即可: 比如:http://xxx.com/wp-content/themes/begin/js/ds.js ②、html部分 将上述html代码按照实际情况修改后,添加到博客主题想要放置打赏按钮的地方,比如文章底部。具体是哪个文件,不同主题都是不同的,所以这里我没法告诉你!想要折腾网站总是要有一定基础的。 全部完成之后,刷新网页应该可以看到效果了,不过我上面的js代码中的css样式只是适配了Begin主题,其他网站用上后是方的还是圆的,就只能靠自己去调试CSS代码了。 三、Begin适配 如果你用的和我一样的主题,那就简单了。还是将上述js代码保存为ds.js文件,丢到Begin主题的js目录,然后修改 begin/inc/social.php 文件,找到如下代码: 替换为(注意备份原文件!): 四、其他说明 很明显,张戈博客分享的这个打赏不但解决了百度打赏的2个问题,还能够随便DIY了,代码默认集成了4种收款方式,如果你觉得多了或少了,也可以自行DIY代码去折腾,前提是你必须懂一点html和js代码,否则错排了就别喷我了! 另外,不管是Begin主题还是其他任何网站,都是可以使用的,但是打赏按钮的样式和位置就只能靠自己调试css代码了。 不啰嗦了,自己去折腾吧!觉得文章有用的话,有钱的可以打赏,没钱的可以点赞,不怕一万多,不嫌一块少......
阅读全文
网站建设

简单修复360安全检测提示的发现robots文件漏洞

很久没看过360的站长平台了,于是在360搜索中site了一把,发现居然安全评分是99,而不是100。好奇点进去看了下,发现下面这个大奇葩: 呐尼?发现robots.txt文件?这也算漏洞?继续看了下解释: 漏洞类型: 信息泄露 所属建站程序: 其他 所属服务器类型: 通用 所属编程语言: 其他 描述: 目标WEB站点上发现了robots.txt文件。 1.robots.txt是搜索引擎访问网站的时候要查看的第一个文件。 - 收起 2.robots.txt文件会告诉蜘蛛程序在服务器上什么文件是可以被查看的什么文件是不允许查看的。举一个简单的例子:当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。同时robots.txt是任何人都可公开访问的,恶意攻击者可以通过分析robots.txt的内容,来获取敏感的目录或文件路径等信息。 危害: robots.txt文件有可能泄露系统中的敏感信息,如后台地址或者不愿意对外公开的地址等,恶意攻击者有可能利用这些信息实施进一步的攻击。 解决方案: 1. 确保robots.txt中不包含敏感信息,建议将不希望对外公布的目录或文件请使用权限控制,使得匿名用户无法访问这些信息 2. 将敏感的文件和目录移到另一个隔离的子目录,以便将这个目录排除在Web Robot搜索之外。如将文件移到“folder”之类的非特定目录名称是比较好的解决方案: New directory structure: /folder/passwords.txt/folder/sensitive_folder/ New robots.txt: User-agent: * Disallow: /folder/ 3.     如果您无法更改目录结构,且必须将特定目录排除于 Web Robot 之外,在 robots.txt 文件中,请只用局部名称。虽然这不是最好的解决方案,但至少它能加大完整目录名称的猜测难度。例如,如果要排除“admin”和“manager”,请使用下列名称(假设 Web 根目录中没有起始于相同字符的文件或目录): robots.txt: User-agent: * Disallow: /ad Disallow: /ma 原文地址:http://webscan.360.cn/vul/view/vulid/139 大概是懂了,就是robots会泄漏网站后台或其他敏感地址,我之前遇到不想让人通过robots知道的地址,我也会使用上述解决办法中的第3条,只写局部字符串。 但是,这些完全是掩耳盗铃的做法,明眼人都能轻松识别博客是WordPress还是其他建站程序,什么敏感目录根本没法隐藏,当然隐藏了也没啥用。 不过,看到不是100分就不爽,所以我也掩耳盗铃的解决一下吧! 我的思路很简单,对于非蜘蛛抓取 robots.txt 行为一律返回403,也就是robots.txt 只对蜘蛛开放。实现非常简单,在 Nginx 配置中加入如下代码即可: 加入后reload以下Nginx,然后再到浏览器访问robots地址,应该能看到禁止访问403了。 随即去360扫描了一把,结果并不意外: 哦了,问题就简单的解决了,仅仅只是为了这句“神马黑客都是浮云,网站安全比肩360,实在是给力!”,呵呵呵。。。挡一挡网络上的匿名扫描还行,其他的就真的只是浮云了。
阅读全文
网站建设

纠正静态文件域名robots写法,解决百度搜索不显示缩略图的问题

可能有部分站长用了七牛CDN之后,会发现在搜索引擎搜索的结果中缩略图越来越少,甚至消失。。。经过张戈多次思考分析,发现居然是因为使用了七牛CDN导致的,本文就简单分享下这个坑。 在此之前,张戈博客曾2次分析过网站使用七牛CDN之后,静态二级域名robots的写法: 百度站长平台robots工具升级后的新发现 浅谈网站使用七牛云存储之后的robots.txt该如何设置? 确实也是可以了,百度图片收录也正常了。 后来博客换成了php缩略图,并通过Nginx将缩略图重写成了 x.png?w=480 的形式【相关文章】。 接着,将缩略图全部丢到了二级静态域名 res.zgboke.com 上,最后将静态域名的robots设置如下: 结果,很久很久之后就发现百度搜索中,缩略图越来越少,甚至到最后几乎没有了。经验告诉我,要么就是蜘蛛抓取不到图片,要么就是被robots禁封了。 结合百度站长平台的robots工具和抓取诊断工具检查后,发现果然是robots误禁封造成的! 百度索引变动一直以慢著称,所以robots写错了也不会在十天半个月突显出来,真是坑的一B! 通过抓取诊断工具,发现普通图片可以抓取,带参数的图片就抓取失败。经过多次测试,发现问题出现在 Allow: /*.png$ 这种写法,是以 png 结尾,尾部不再包含其他任何字符,因此,上文提到的 PHP+Nginx 缩略图形式 x.png?w=480 ,就处在 robots 禁止抓取的范围了: 于是,我将静态域名robots修改如下: 因为最后一行是禁止所有,所以保守起见,robots.txt我也加入了允许规则。第二行则是关键,一般博客的缩略图和图片都在 wp-content 路径下,不管是不是带参数,都统统允许了。 经过了几个月,目前百度搜索的缩略图基本都恢复正常了: 所以,发现搜索引擎缩略图收录异常的朋友,可以先分析下是不是蜘蛛被robots或其他因素拦截了。 最新补充:启福留言说其实把尾巴的$改成通配符*就好了。确实如此,所以静态域名的robots可以修改如下: 这样就可以让蜘蛛仅抓取图片了,范围比 wp-content 更精准一些。总之,对哪种写法存在疑问,只要借助百度站长平台的robots工具检测一下就一清二楚了。 最后强调说明一下,本文说的robots是适用于只存放图片等静态文件的二级域名(比如:res.zgboke.com)!别乱用到主站的robots,被K站了别来哭哦! 再次更新:突然想起一件事,记得之前用过谷歌的移动设备适合性测试工具,是需要抓取css和js的,否则显示出来的布局就是乱的了:而且百度的移动友好度测试工具(目前好像已经隐藏,看不到了)也需要抓取css和js,所以css和js还是得放开,最终版修改如下: 其中,Allow: /wp-content/ 自己看着办吧,个人建议加上,避免遗漏主题特有静态文件,比如字体。
阅读全文
网站建设

分享一个网站防镜像以及解决七牛静态页面跳转的js方案

导读:作为站长,基本都遇到过网站被人镜像的烦恼吧?最典型的代表就是谷歌搜索,大家都懂的。很多时候反代我们网站的人可能就是拿你的网站练下手,学习下反向代理。当遇到网站被反代,而且排名还比你好的时候,有没有要暴走的冲动...本文分享一种简单有效网站防镜像的方案,适合任何html页面。 一、前人分享 挺早之前,看到boke112转载过一篇网站防镜像教程,分享了从.htaccess、php以及js三个方向禁止他人恶意反向代理我们的网站。当时看完觉得三个方法都不完善: 先分析下原理: .htaccess方案是禁止从代理IP过来的请求 js方案如果发现浏览器url地址不是预期的,那么直接跳转到我们规定的域名。 php方案的原理和js方案类似,通过 $_SERVER 变量判断域名判断请求是否符合预期,不是就跳转走。 再分析下缺憾: .htaccess方案,只要请求中含有代理IP(HTTP_X_FORWARDED_FOR不为空)就禁止访问,那如果用CDN的就全部GG了,而且这个值是可以在做反向代理的时候置空的,比如Nginx中可以这样做: php方案中,$_SERVER的值同样可以在反向代理时伪造,比如: 二、优化版本 已推出最终版,所以,此优化版本可以不用了 js方案,这个也是我今天要分享的方案,之前在boke112我也留言分享了张戈博客的做法,不过好像留言被删除了。文章中的js方案可是可以,但是是写死的跳转。也就是说不管在哪个页面,最终跳转都是首页!显然,这个方案还不够精细化,我们可以做得更细致! 所以,网站防镜像最简单有效的做法就是在<head>部分插入如下js代码即可: 这里对文章js方案做了更细致的改善,也就是跳转之前想将当前url做一次替换,把当前url中的域名换成我们规定的域名,确保跳转后就是用户想要的页面,而不是强硬的跳到首页! js方案相对于其他方案来说,它的优势在于无法在反代时伪造,浏览器反馈的就是真实的访问情况,直接粗暴。当然,用 Nginx 的第三方内容过滤模块 ngx_http_subs_filter_module 也可以对反代的页面内容进行过滤,当然这是更高级的手法了,这里就不深入介绍了(请注意这段话,本文分享的只是一个方案,并非绝对有效的方法!!)。 三、最终版本 ①、WordPress专用版 龙笑天下很好的整理总结了目前几种防镜像的js方案,我看到最后一个借助了img的onerror事件,想法不错,就重新写了一个更简洁,兼容性更好的代码: 将此代码添加到主题functions.php文件当中即可。其他类似js可以不用上了,不过也不会冲突。 Ps:本来是丢到wp_head的,经过测试发现图片放到head,浏览器会自动进行错误调整,导致一些本来在head的元素被丢到了body当中,比如style.css,估计网页标准中head里面就不应该放置图片,所以移到了footer当中。 2017年10月21日补充:这段代码会因为onerror死循环造成浏览网页的电脑高负载(CPU飙升),因此在代码onerror触发事件中加入onerror清空机制,即加入this.onerror=null【相关文章】。 ②、HTML通用版 既然是js代码,那么肯定可以用于任何符合html规范的页面了。要不是为了可以放到wp的functions.php,都没必要写成php的模式,直接用html代码即可: 将以上代码中的 自行拆分成自己的域名,避免被镜像代码替换掉,比如: 然后将代码添加到网站的<body>之后即可(不建议放置到<head>里面,具体原因上文已说明),WP一般为header.php文件,其他建站程序请自行搞定,这个版本适合任何网页。 ③、通过UA禁止 JS版本效果确实可以,但是有一个小弊端,大部分搜索引擎不能识别js,所以蜘蛛还是能正常抓取镜像网站,有可能会影响SEO。要彻底解决镜像站问题,就得直接禁止镜像网站服务器抓取我们的网页。 有网站已经分享了通过获取镜像网站的服务器IP来禁止抓取,但是镜像网站换一个IP,或者还有其他镜像网站,都无法一劳永逸。所以,我们可以研究镜像服务器抓取时的特征,然后通过禁止特征来解决镜像问题,当然这个方法也不能绝对,因为特征很多时候都是可以伪造的,这里就不多说了。 14年张戈博客就就已经整理分享过网站反爬虫攻略:《服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站》,其实这种镜像站和采集基本类似,所以我们需要先分析某一类镜像站的UA特征是什么。 抽空对此次站长朋友纷纷“讨伐”的几个镜像站进行了分析,其实就是在访问镜像网页的时候去查看我们的网站日志,我发现全部请求UA都是PHP/5.4.4: 想来也就明白了,这些镜像站点基本都是用的一套程序,甚至环境都是一致的!这让人很容易联想是不是一个人在搞事。。。 好了,废话不多说,既然知道他们的UA了,那么就很好解决了。直接将 PHP这个关键词加入到《服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站》 这篇文章的UA清单中即可! 这里,只简单分享一下PHP代码和Nginx代码,其他的请参考前文。 PHP通用版: 将以上代码加入到PHP网站根目录的index.php的<?php 之后即可。 WP适用版: 如果使用上面的php版本,WordPress每次更新就会需要操作index.php,比较麻烦,因此弄个专版: 将以上代码添加到WordPress主题的functions.php中即可。 Nginx版本: 将以上规则加入到nginx的vhost当中,比如添加到第一个location 之前,然后重载Nginx即可。 我看到有同学使用了htaccess来判断UA,但最后却返回了一个301跳转到首页,虽然也可以,但是有时候镜像程序也是可以抓取301的目标内容的,至少我之前就写过支持301跳转的php代码。 好了,关于镜像网站的问题就整理分享这么多,大家自行选择适合自己的方案即可! 四、拓展延伸 另外,如果是使用https的网站,想将 http 的访问都跳转到 https 又不想弄个301跳转(可能影响SEO),那么上述js代码稍微改改就能完美跳转了: 看到这,你应该体会到了js的妙用吧?后续应该可以举一反三,多多利用了! 五、七牛镜像 用了七牛的网站,可以试试直接访问我们自定义的七牛静态域名,是不是和我们现在的网站一模一样呢?只是它不会更新而已。很多人肯定下意识的试过张戈博客,发现居然会跳转到对应的博客页面! 比如访问:http://static.zhang.ge/5100.html 会跳转到 https://zhang.ge/5100.html 于是,有不少朋友留言问我,怎么实现301跳转的?? 好吧,除非七牛帮忙在CDN节点做设置,将非静态资源请求都跳转到源站,否则张戈也是没办法做301跳转的。因此,你看到的跳转也不是301了,而是js的跳转! 实现原理就是上文介绍的js方案咯!七牛就类似于一个镜像站,而且是静态存储到了七牛节点,因此只能用js方案,在静态页面中实现判断和跳转。 所以,上文分享的js防镜像代码,同样适用于七牛静态页面的自动跳转。只是美中不足的是,大部分搜索引擎并不能识别这个跳转,为了SEO,那你还得继续使用七牛的robots设置了。 当然,如果你添加js代码之前就已经在使用七牛了,那么必须清空七牛中的缓存文件才行,否则是不会跳转的了!因为缓存的代码中没有这段js咯! 最新补充:有人留言说了更好的方案,在Nginx中判断七牛的UA以及抓取的路径就能杜绝七牛缓存不改缓存的页面,要实现也很简单,在Nginx配置中加入如下规则即可: 最后,再啰嗦一句,本文分享的只是小白入门级方案,喜欢喷的朋友建议早点Alt +F4,张戈谢谢你。
阅读全文
网站建设

WordPress百度自动推送JS优化,规避错误、重复推送问题

导读:关注SEO、关注收录的站长,应该都知道百度搜索提供了一段自动推送的js代码,可将任意网页推送到搜索引擎,加快收录。但是,这段代码并不是简单的增加到网页中万事大吉了!百度埋坑技术,你我都懂的!本文主要分享埋坑之自动推送JS代码的优化... 一、问题描述 百度近些年推出过多种收录推送工具,比如结构化数据插件、主动推送、自动推送js等等。每一次张戈都会对这些东西进行优化处理,主要是因为这些工具都会出现重复推送的弊病!虽然百度并没有申明重复推送会带来什么副作用。但根据我个人的经验,同一篇文章,如果重复推送,可能会让百度蜘蛛认为你这文章更新频繁,不稳定从而进入收录沙盒短期内不会展示! 这一点,在以往的文章中我都反复提出过: BaiduSubmit:百度WordPress结构化数据插件(改进版) WordPress百度链接主动提交插件:Baidu-links-submit优化版 WordPress发布文章主动推送到百度,加快收录保护原创 对于百度最新推出的自动推送JS代码,通过站长平台的反馈来看,依然存在重复推送的坑: Ps:看到这个回复,其实我是打心底鄙视了百度一把!这js只需要添加到新页面?那新页面收录之后,我们再去删除js代码?那我还要经常关注页面是不是被收录?那几万个页面的网站还得靠工具检测咯? 重复推送到底有没有副作用,百度并没有给我明确的答复。不过管理员明确回复,无需添加主动推送,就算是没有副作用,已收录的页面也添加自动推送js代码,也会浪费每天的可推送额度( 当天剩余的可推送url条数)! 另外,我们知道,很多时候多个url地址其实是同一个页面内容,比如: 而且,当我们给页面带上查询参数,显示的依然是同一个页面内容,但是Url地址变了!!那么自动推送js获取到的Url也变了!它就会将这个 Url 推送到搜索引擎!实际上,这些相同内容的页面我们并不希望重复抓取和收录! 二、问题解决 根据上面的分析,这类自动推送js代码就不能整站添加,而是只需添加到未收录且正规Url的页面。 比如: https://zhang.ge/5093.html 百度已收录,这种页面不添加 https://zhang.ge/5096.html 百度未收录,这种页面要添加 https://zhang.ge/5096.html?from_weixin 百度未收录,但属于重复内容页面,所以不添加 已收录、未收录的判断,关注张戈博客的朋友肯定记得我之前在博客分享过百度是否收录的插件和代码吧!而对于是否是正规页面,也只需要添加一个简单判断。 如上PHP代码,添加到主题functions.php即可。当页面未被百度收录,且被访问的页面地址等于WordPress唯一页面地址时,将会输出百度自动推送js代码,不符合条件的页面则不会输出。 2016年5月31日更新说明:有朋友反馈收录判断不准确,花时间DEBUG看了下,发现抓取到的百度搜索结果可能是空白内容等错误内容,导致判断为已收录! 所以,上述代码加入百度搜索结果必要关键词【百度为您找到相关结果】的条件判断,目前来看应该比较准确了,已在使用的朋友请更新到最新代码。 三、其他说明 和以前分享的百度是否收录代码一样的工作原理,文章加载时,会在百度搜索当前文章的url地址,如果百度未收录,查询结果中会匹配到【没有找到该URL。您可以直接访问】或【很抱歉,没有找到与】文字内容。当代码确认页面已收录时,将会在文章中添加一个值为1的 baidu_record 自定义栏目。 只有当 baidu_record 这个自定义栏目的值不存在时,代码才会去百度查询收录结果。并且在确认未收录之后,才会在网页 footer 中输出自动推送js代码。 这样就规避了已收录页面重复推送和百度实时查询导致加载慢两个问题! 另外,其实还有另一个值得关注的坑:百度统计代码也会自动推送,是否也存在本文提到的问题,就不得而知了。 最后,顺便说明一下,360搜索也推出了主动收录js代码,喜欢折腾的朋友可以参考本文进行优化。 效果补充:实施后,自动推送数量以从200+降为20+,说明已收录的文章不会重复推送了。
阅读全文