老铁们,大家好,相信还有很多朋友对于抓取服务器和能抓用户的s数据吗的相关问题不太懂,没关系,今天就由我来为大家分享分享抓取服务器以及能抓用户的s数据吗的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
一、如何查看网站抓取频率如何查搜索频率
如何查看网站被百度蜘蛛抓取的情况?
百度抓取网页的程序叫Baiduspider-Baiduspider。我们主要分析网站被百度抓取的情况。百度蜘蛛在网站日志中的活动:抓取频率和返回的HTTP状态码。
如何查看日志:
通过FTP,在网站根目录下找到一个日志文件。文件名通常包含log。并解压里面的记事本。这是网站的日志,记录了网站的访问量和运营情况。
因为每个服务器和主机的情况不一样,不同主机的日志功能记录的内容也不一样,有的甚至没有日志功能。
日志内容如下:
61.135.168.22--[2009年1月11日:04:02:450800]GET/BBS/thread-7303-1-1.htmlHTTP/1.12008450"Baiduspider()
分析:
GET/bbs/thread-7303-1-1.html代表,抓取此页面/bbs/thread-7303-1-1.html。
200代表抢到成功。
850表示已经抓取了8450个字节。
如果你日志里的格式不一样,说明日志格式不一样。
在很多日志中可以看到,20000和200064代表正常抓取。
通过查看百度蜘蛛在每日日志中的抓取次数就知道了抓取频率。抢频没有标准的档期或频号。我们一般通过比较多天的日志来判断。当然,我们希望百度蜘蛛每天抓取的次数越多越好。
如何获取网站api接口?
关于网站API接口的获取与调用,在网站开发中运用比较常见,也是每一个程序员、开发者必需的技能,比如从腾讯,新浪等大型网站提供的接口调用,在开发者经常遇到;所以,作为开发人员,在写好代码的同时,要学会API接口的调用。本篇经验以C#语言为了,演示发送短信的API接口调用。
工具/原料
计算机
方法/步骤
1、熟悉概念什么是API,即应用程序编程接口,也就是在网站开发时预先定义的函数,就是常说的开源函数,只不过将一些固定的程序封装在这些函数中,待调用时只需要一个借口引用,方便又简单。就像调用Jquery函数一样。
2、获取接口发送短信API接口在开源代码里面可以查到,可以到开源网站查询即可。
3、分析参数短息接口跟其他接口有所不同,短信接口是由各地运营商收费才能开通。所以,接口返回成功不代表接收成功,具体接收状态只能由运营商查询,另外,短信api接口本身不限制发送频率,具体发送频率需要用户自行设置。
4、调用返回值测试在html文件中写入调用接口,并测试,查看是否调用成果,如图显示成果与失败的返回参数。
5、C#接入接口在C#程序中输入以下代码,调用短信接口;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net;usingSystem.IO;usingXfrog.Net;usingSystem.Diagnostics;usingSystem.Web;如图:(关于C#程序的创建,不再演示)
6、申明调用空间每个函数都需要事先*才能调用,所以,在程序开始时,必须*命名空间namespaceConsoleAPI{}
7、定义请求方法程序的调用方法一般为Post和Get两种,所以要申明用什么调用,关于Post和Get的区别,本处不作重点介绍。
8、创建请求函数*请求方式之后,即可创建请求函数,包括发送语言,延时响应等参数
9、请求参数及文本转换设置相关参数后,将程序编码转换为文字编码,这样接收方才能正常显示文字,否则就是一段代码,行外人是看不懂的,所以,必须将数据流转换为文本对象。
10、释放资源并测试写程序调用时,不管是什么程序,在调用完之后一定要释放程序,否则将会一直占用资源,消耗内存。
ansys谱分析怎么加载频率?
频率的单位当然是赫兹或者倍数量级。ANSYS模态分析后得到的频率一般是从1到N阶的频率,固有频率。当然可以随意提取任意阶的频率,任意组合。而物体的固有频率,根据振动学的描述,主要是低阶频率贡献的。至于怎么查看,需要去看后处理器,那里有显示。
做一个电子表格excelvba实时获取网页数据?
Excel界面操作:数据——导入外部数据——新建Web查询:在出现的界面栏输入网址,然后选择需要更新的数据范围——导入——选择数据放的单元格(必要时修改属*,如刷新频率等)——确定。这样当网页数据变化时,Excel表格的数据就会同样改变。如果非要用VBA,用录制宏稍作修改即可。
二、fillder代理服务器***能抓用户的s数据吗
可以的
Fiddler抓取HTTPS流量的原理
TLS是一种端到端的传输层加密协议,是HTTPS协议的一个组成部分。访问HTTPS站点时,HTTP请求、响应都通过TLS协议在浏览器和服务
器之间加密传输,并且通过数字证书技术保证数据的保密*和完整*;任何“中间人”、包括代理服务器都只能转发数据,而无法窃听或者篡改数据。
要抓取HTTPS流量的明文内容,Fiddler必须解密HTTPS流量。但是,浏览器将会检查数字证书,并发现会话遭到窃听。为了骗过浏览
器,Fiddler通过使用另一个数字证书重新加密HTTPS流量。Fiddler被配置为解密HTTPS流量后,会自动生成一个名为
DO_NOT_TRUST_FiddlerRoot的CA证书,并使用该CA颁发每个域名的TLS证书。若
DO_NOT_TRUST_FiddlerRoot证书被列入浏览器或其他软件的信任CA名单内,则浏览器或其他软件就会认为HTTPS会话是可信任的、
而不会再弹出“证书错误”警告。
开启HTTPS流量解密功能后,Fiddler将会提示用户将DO_NOT_TRUST_FiddlerRoot证书列入IE浏览器的信任CA名
单。用于调试客户端时,这已经足够了;Firefox用户也可以很方便的手动导入DO_NOT_TRUST_FiddlerRoot证书。但是,若要在服
务器上抓取ASP.Net发出的HTTPS请求,这是不够的——你必须将DO_NOT_TRUST_FiddlerRoot证书导入“机器帐号”的信任
CA名单。
操作录像
该录像演示了下列操作:
开启Fiddler的HTTPS流量解密功能
将DO_NOT_TRUST_FiddlerRoot证书导入“机器帐号”的信任CA名单
将PHP脚本的代理服务器设置为127.0.0.1:8888,并抓取HTTPS请求
主要网络开发框架的抓包配置
Fiddler的工作方式是代理服务器(端口号8888)。只要开发框架支持设置HTTP代理服务器,都可以使用Fiddler。
#PHP curl
$ch=curl_init(';);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1:8888');//设置代理服务器
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);//若PHP编译时不带openssl则需要此行
$resp=curl_exec($ch);
curl_close($ch);
<!-- ASP.Net web.config-->
<configuration>
<system.>
<defaultProxy enabled="false">
<proxy proxyaddress=""/>
</defaultProxy>
</system.>
</configuration>
如果你使用linux服务器,请将Fiddler安装在一台Windows计算机上并在Tools- Fiddler Options-
Connections勾选Allow remote puters to
connect,并手动将FiddlerRoot.cer导入linux服务器的信任CA名单,最后将代理服务器设置成Fiddler所在IP的8888
端口。
三、windows服务器怎么反爬虫
手工识别和拒绝爬虫的访问
相当多的爬虫对网站会造成非常高的负载,因此识别爬虫的来源IP是很容易的事情。最简单的办法就是用stat检查80端口的连接:
stat-nt| grep youhostip:80| awk'{print$5}'| awk-F":"'{print$1}'| sort| uniq-c| sort-r-n
这行shell可以按照80端口连接数量对来源IP进行排序,这样可以直观的判断出来网页爬虫。一般来说爬虫的并发连接非常高。
如果使用ligd做Web
Server,那么就更简单了。ligd的mod_status提供了非常直观的并发连接的信息,包括每个连接的来源IP,访问的URL,连接状
态和连接时间等信息,只要检查那些处于handle-request状态的高并发IP就可以很快确定爬虫的来源IP了。
拒绝爬虫请求既可以通过内核防火墙来拒绝,也可以在web server拒绝,比方说用iptables拒绝:
iptables-A INPUT-i eth0-j DROP-p tcp--dport 80-s 84.80.46.0/24
封锁爬虫所在的C网段。这是因为一般爬虫都是运行在托管机房里面,可能在一个C段里面的多台服务器上面都有爬虫,而这个C段不可能是用户宽带上网,封锁C段可以很大程度上解决问题。
通过识别爬虫的User-Agent信息来拒绝爬虫
有很多爬虫并不会以很高的并发连接爬取,一般不容易暴露自己;有些爬虫的来源IP分布很广,很难简单的通过封锁IP段来解决问题;另外还有很多
各种各样的小爬虫,它们在尝试Google以外创新的搜索方式,每个爬虫每天爬取几万的网页,几十个爬虫加起来每天就能消耗掉上百万动态请求的资源,由于
每个小爬虫单独的爬取量都很低,所以你很难把它从每天海量的访问IP当中把它准确的挖出来。
这种情况下我们可以通过爬虫的User-Agent信息来识别。每个爬虫在爬取网页的时候,会*自己的User-Agent信息,因此我们就可以
通过记录和分析User-Agent信息来挖掘和封锁爬虫。我们需要记录每个请求的User-Agent信息,对于Rails来说我们可以简单的在
/controllers/lication.rb里面添加一个全局的before_filter,来记录每个请求的User-Agent信
息:
logger.info"HTTP_USER_AGENT#{request.env["HTTP_USER_AGENT"]}"
然后统计每天的production.log,抽取User-Agent信息,找出访问量最大的那些User-Agent。要注意的是我们只关注那
些爬虫的User-Agent信息,而不是真正浏览器User-Agent,所以还要排除掉浏览器User-Agent,要做到这一点仅仅需要一行
shell:
grep HTTP_USER_AGENT production.log| grep-v-E'MSIE|Firefox|Chrome|Opera|Safari|Gecko'| sort| uniq-c| sort-r-n| head-n 100> bot.log
统计结果类似这样:
57335 HTTP_USER_AGENT Baiduspider+(+)
56639 HTTP_USER_AGENT Mozilla/5.0(patible; Googlebot/2.1;+)
42610 HTTP_USER_AGENT Mediapartners-Google
19131 HTTP_USER_AGENT msnbot/2.0b(+)
从日志就可以直观的看出每个爬虫的请求次数。要根据User-Agent信息来封锁爬虫是件很容易的事情,ligd配置如下:
$HTTP["useragent"]=~"qihoobot|^J*a|Commons-HttpClient|Wget|^PHP|Ruby|Python"{
url.rewrite=("^/(.*)"=>"/crawler.html")
}
使用这种方式来封锁爬虫虽然简单但是非常有效,除了封锁特定的爬虫,还可以封锁常用的编程语言和HTTP类库的User-Agent信息,这样就可以避免很多无谓的程序员用来练手的爬虫程序对网站的骚扰。
还有一种比较常见的情况,就是某个搜索引擎的爬虫对网站爬取频率过高,但是搜索引擎给网站带来了很多流量,我们并不希望简单的封锁爬虫,仅仅是希望降低爬虫的请求频率,减轻爬虫对网站造成的负载,那么我们可以这样做:
$HTTP["user-agent"]=~"Baiduspider+"{
connection.delay-seconds= 10
}
对百度的爬虫请求延迟10秒钟再进行处理,这样就可以有效降低爬虫对网站的负载了。
通过网站流量统计系统和日志分析来识别爬虫
有些爬虫喜欢修改User-Agent信息来伪装自己,把自己伪装成一个真实浏览器的User-Agent信息,让你无法有效的识别。这种情况下我们可以通过网站流量系统记录的真实用户访问IP来进行识别。
主流的网站流量统计系统不外乎两种实现策略:一种策略是在网页里面嵌入一段js,这段js会向特定的统计服务器发送请求的方式记录访问量;另一种策
略是分析服务器日志,来统计网站访问量。在理想的情况下,嵌入js的方式统计的网站流量应该高于分析服务器日志,这是因为用户浏览器会有缓存,不一定
每次真实用户访问都会触发服务器的处理。但实际情况是,分析服务器日志得到的网站访问量远远高于嵌入js方式,极端情况下,甚至要高出10倍以上。
现在很多网站喜欢采用awstats来分析服务器日志,来计算网站的访问量,但是当他们一旦采用Google
Analytics来统计网站流量的时候,却发现GA统计的流量远远低于awstats,为什么GA和awstats统计会有这么大差异呢?*就是
把自己伪装成浏览器的网络爬虫。这种情况下awstats无法有效的识别了,所以awstats的统计数据会虚高。
其实作为一个网站来说,如果希望了解自己的网站真实访问量,希望精确了解网站每个频道的访问量和访问用户,应该用页面里面嵌入js的方式来开发自己
的网站流量统计系统。自己做一个网站流量统计系统是件很简单的事情,写段服务器程序响应客户段js的请求,分析和识别请求然后写日志的同时做后台的异步统
计就搞定了。
通过流量统计系统得到的用户IP基本是真实的用户访问,因为一般情况下爬虫是无法执行网页里面的js代码片段的。所以我们可以拿流量统计系统记录的
IP和服务器程序日志记录的IP进行比较,如果服务器日志里面某个IP发起了大量的请求,在流量统计系统里面却根本找不到,或者即使找得到,可访问量
却只有寥寥几个,那么无疑就是一个网络爬虫。
分析服务器日志统计访问最多的IP段一行shell就可以了:
grep Processing production.log| awk'{print$4}'| awk-F'.''{print$1"."$2"."$3".0"}'| sort| uniq-c| sort-r-n| head-n 200> stat_ip.log
然后把统计结果和流量统计系统记录的IP进行对比,排除真实用户访问IP,再排除我们希望放行的网页爬虫,比方Google,百度,微软msn爬虫等等。最后的分析结果就就得到了爬虫的IP了。以下代码段是个简单的实现示意:
whitelist= []
IO.foreach("#{RAILS_ROOT}/lib/whitelist.txt"){|line| whitelist<< line.split[0].strip if line}
realiplist= []
IO.foreach("#{RAILS_ROOT}/log/visit_ip.log"){|line| realiplist<< line.strip if line}
iplist= []
IO.foreach("#{RAILS_ROOT}/log/stat_ip.log") do|line|
ip= line.split[1].strip
iplist<< ip if line.split[0].to_i> 3000&&!whitelist.include?(ip)&&!realiplist.include?(ip)
end
Report.deliver_crawler(iplist)
分析服务器日志里面请求次数超过3000次的IP段,排除白名单和真实访问IP,最后得到的就是爬虫IP了,然后可以发送邮件通知管理员进行相应的处理。
网站的实时反爬虫防火墙实现策略
通过分析日志的方式来识别网页爬虫不是一个实时的反爬虫策略。如果一个爬虫非要针对你的网站进行处心积虑的爬取,那么他可能会采用分布式爬取策略,
比方说寻找几百上千个国外的代理服务器疯狂的爬取你的网站,从而导致网站无法访问,那么你再分析日志是不可能及时解决问题的。所以必须采取实时反爬虫策
略,要能够动态的实时识别和封锁爬虫的访问。
要自己编写一个这样的实时反爬虫系统其实也很简单。比方说我们可以用memcached来做访问计数器,记录每个IP的访问频度,在单位时间之内,
如果访问频率超过一个阀值,我们就认为这个IP很可能有问题,那么我们就可以返回一个验证码页面,要求用户填写验证码。如果是爬虫的话,当然不可能填写验
证码,所以就被拒掉了,这样很简单就解决了爬虫问题。
用memcache记录每个IP访问计数,单位时间内超过阀值就让用户填写验证码,用Rails编写的示例代码如下:
ip_counter= Rails.cache.increment(request.remote_ip)
if!ip_counter
Rails.cache.write(request.remote_ip, 1,:expires_in=> 30.minutes)
elsif ip_counter> 2000
render:template=>'test',:status=> 401 and return false
end
这段程序只是最简单的示例,实际的代码实现我们还会添加很多判断,比方说我们可能要排除白名单IP段,要允许特定的User-Agent通过,要针对登录用户和非登录用户,针对有无referer采取不同的阀值和计数加速器等等。
此外如果分布式爬虫爬取频率过高的话,过期就允许爬虫再次访问还是会对服务器造成很大的压力,因此我们可以添加一条策略:针对要求用户填写验证码的
IP,如果该IP短时间内继续不停的请求,则判断为爬虫,加入黑名单,后续请求全部拒绝掉。为此,示例代码可以改进一下:
before_filter:ip_firewall,:except=>:test
def ip_firewall
render:file=>"#{RAILS_ROOT}/public/403.html",:status=> 403 if BlackList.include?(ip_sec)
end
我们可以定义一个全局的过滤器,对所有请求进行过滤,出现在黑名单的IP一律拒绝。对非黑名单的IP再进行计数和统计:
ip_counter= Rails.cache.increment(request.remote_ip)
if!ip_counter
Rails.cache.write(request.remote_ip, 1,:expires_in=> 30.minutes)
elsif ip_counter> 2000
crawler_counter= Rails.cache.increment("crawler/#{request.remote_ip}")
if!crawler_counter
Rails.cache.write("crawler/#{request.remote_ip}", 1,:expires_in=> 10.minutes)
elsif crawler_counter> 50
BlackList.add(ip_sec)
render:file=>"#{RAILS_ROOT}/public/403.html",:status=> 403 and return false
end
render:template=>'test',:status=> 401 and return false
end
如果某个IP单位时间内访问频率超过阀值,再增加一个计数器,跟踪他会不会立刻填写验证码,如果他不填写验证码,在短时间内还是高频率访问,就
把这个IP段加入黑名单,除非用户填写验证码激活,否则所有请求全部拒绝。这样我们就可以通过在程序里面维护黑名单的方式来动态的跟踪爬虫的情况,甚
至我们可以自己写个后台来手工管理黑名单列表,了解网站爬虫的情况。
关于这个通用反爬虫的功能,我们开发一个开源的插件:
这个策略已经比较智能了,但是还不够好!我们还可以继续改进:
1、用网站流量统计系统来改进实时反爬虫系统
还记得吗?网站流量统计系统记录的IP是真实用户访问IP,所以我们在网站流量统计系统里面也去操作memcached,但是这次不是增加计数
值,而是减少计数值。在网站流量统计系统里面每接收到一个IP请求,就相应的cache.decrement(key)。所以对于真实用户的IP来说,它
的计数值总是加1然后就减1,不可能很高。这样我们就可以大大降低判断爬虫的阀值,可以更加快速准确的识别和拒绝掉爬虫。
2、用时间窗口来改进实时反爬虫系统
爬虫爬取网页的频率都是比较固定的,不像人去访问网页,中间的间隔时间比较无规则,所以我们可以给每个IP建立一个时间窗口,记录IP最近
12次访问时间,每记录一次就滑动一次窗口,比较最近访问时间和当前时间,如果间隔时间很长判断不是爬虫,清除时间窗口,如果间隔不长,就回溯计算指定时
间段的访问频率,如果访问频率超过阀值,就转向验证码页面让用户填写验证码。
最终这个实时反爬虫系统就相当完善了,它可以很快的识别并且自动封锁爬虫的访问,保护网站的正常访问。不过有些爬虫可能相当狡猾,它也许会通过大量
的爬虫测试来试探出来你的访问阀值,以低于阀值的爬取速度抓取你的网页,因此我们还需要辅助第3种办法,用日志来做后期的分析和识别,就算爬虫爬的再慢,
它累计一天的爬取量也会超过你的阀值被你日志分析程序识别出来。