假定一个场景:某个网站它可能不希望被网络爬虫抓取,例如测试环境不希望被抓取,以免对用户造成误导,那么需要在该网站中申明,本站不希望被抓取。有如下方法:

方法一:修改nginx.conf,禁止网络爬虫的ua,返回403。

server {

listen 80;
server_name 127.0.0.1;

#添加如下内容即可防止爬虫

if ($http_user_agent ~* “qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot”)
{
return 403;
}

方法2:网站更目录下增加Robots.txt,放在站点根目录下。

在http://tool.chinaz.com/robots/站点可以针对现在的搜索引擎按照想要的规则生成robots.txt文件。

知识扩展:

robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。

当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。百度官方建议,仅当您的网站包含不希望被搜索引擎收录的内容时,才需要使用robots.txt文件。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件。
Robots协议是国际互联网界通行的道德规范,基于以下原则建立:
1、搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权;
2、网站有义务保护其使用者的个人信息和隐私不被侵犯。
当然,如果搜索引擎不遵守约定的Robots协议,那么通过在网站下增加robots.txt也是不起作用的。(在正式环境中,可以适当允许搜索引擎抓取收录)

转载:http://www.webkaka.com/tutorial/zhanzhang/2017/061069/

nginx防蜘蛛处理

html代码

<a href=”http://www.shangzh.com” class=”tooltiptitle=”老李的博客”>尚站互联首页</a>

js代码

//鼠标跟随
var x = 15;
var y = 10;
$("body").append("&lt;div id='tooltip' style='position: absolute;border: #333 1PX solid;background: #f7f5d1;padding: 1px;color: #333;display: none;padding: 1px;'&gt;&lt;/div&gt;");
var mytooltip = $("#tooltip");

$(".tooltip").mouseover(function (e) { //当鼠标指针从元素上移入时
   this.mytitle = this.title;
   this.title = '';
   mytooltip.html(this.mytitle).css({ "top": (e.pageY + y) + "px", "left": (e.pageX + x) + "px" }).show("fast");
}).mouseout(function () { //当鼠标指针从元素上移开时
   this.title = this.mytitle;
   mytooltip.html('');
}).mousemove(function (e) { //当鼠标指针从元素上移动时
   mytooltip.css({ "top": (e.pageY + y) + "px", "left": (e.pageX + x) + "px" });
});

在使用phpsocket.io时需要https支持,在配置的时候踩了不少坑,这里做一下笔记。

如果你的ssl比较多,当然可以用独立域名来配置phpsocket.io 那就比较简单。只需要用nginx代理ssl就可以了,配置如下

server {
listen 443;

# host name to respond to
server_name ws.example.com;

# your SSL configuration
ssl on;
ssl_certificate /etc/ssl/localcerts/ws.example.com.bundle.crt;
ssl_certificate_key /etc/ssl/localcerts/ws.example.com.key;

location / {
# switch off logging
access_log off;

# redirect all HTTP traffic to localhost:8080
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

# WebSocket support (nginx 1.4)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
}

Read More →

服务器信息传输

// send to current request socket client
socket.emit(‘message’, “this is a test”);

// sending to all clients except sender
socket.broadcast.emit(‘message’, “this is a test”);

// sending to all clients in ‘game’ room(channel) except sender
socket.broadcast.to(‘game’).emit(‘message’, ‘nice game’);

// sending to all clients, include sender
io.sockets.emit(‘message’, “this is a test”);

// sending to all clients in ‘game’ room(channel), include sender
io.sockets.in(‘game’).emit(‘message’, ‘cool game’);

// sending to individual socketid
io.sockets.socket(socketid).emit(‘message’, ‘for your eyes only’);
上述集中方式为socket.io常用的数据传输方式,

io.sockets.on(‘connection’, function (socket) {

});

回调函数的socket参数为一个 client 与服务器的连接标示,不同的 client 会有不同的连接标示。

Read More →