最近在学习爬虫,用的是Java
但是在抓取某个站点的时候ip一直被封,于是去网上爬虫了一些代理IP 但是效果不理想
我想问一下 针对各别站点 如果每天要访问上百万次 这种情况要怎么办?
我看一些文章 他们几百个IP 就能解决,但是 单个IP 一定时间内访问次数过多 应该会被封吧
像那些 每天抓取几千万 甚至上亿数据 他们是怎么做到的? 用的adsl 拨号吗 ?
最主要是他们怎么 做到不被封IP
有没大大指点一下
1
kslr 2015-04-05 18:55:18 +08:00
兵来将挡,水来土掩
|
2
anexplore 2015-04-07 18:42:46 +08:00
对一个网站,假设100个ip,一个ip 1s一个网页,一天8w,100个ip一天就是800w了。假设N个网站,一个ip一秒100左右(N个网站轮转),那么一天就是800w了,10个ip一天就是8000w了。假设一个网页平均50kB那么每秒流量就是100*50kB= 5MB;多整点代理ip吧
|
3
aa233322aaa OP @anexplore 我还有点疑问,1.代理IP的的有效时间,一般代理IP的有效时间不是很短吗?2.同一个IP爬取一个站点,在一定时间内要是数量过多的话 不是会被封吗?
|
4
anexplore 2015-04-08 21:14:09 +08:00
@aa233322aaa 搞一个代理失效验证机制,验证通过推送给下载端;下载端动态更新代理;一个站点的dns可能会对应若干个ip,所以要轮转访问站点的若干ip,减小被封的概率;1s或者几秒访问一个站点一次,一般不会被封掉的;
|
5
aa233322aaa OP @anexplore 谢谢你的解答,我还有些疑问。。。我要怎么知道这个站点的其他IP?通过浏览器访问看连接详情吗?还有假设我4S一次访问的频率 ,那一天也有2W次的量,这种数量一般不会是人为点击的吧。。那些反爬虫严格一点的网站不会封吗?如果加大访问间隔 是不是需要用多台服务器 开多线程来保证量?
|
6
anexplore 2015-04-09 10:39:57 +08:00 1
@aa233322aaa
1.解DNS自然就知道网站的IP是什么,而且在不同地狱解析同一个网站的DNS可能还是不一样的; 2.要遵循robots协议;控制频率;也可以控制时间段,比如晚上访问量少的时候爬;被封掉就让频率更小;反爬虫很严格的站点毕竟还是少数; 3.一般一个服务都只有一个外网ip,所以要用多ip自然得多个服务器了。 这些东西多试一试就知道了。。。 |
7
aa233322aaa OP @anexplore 谢谢,我再去试试
|