有人研究过看准网的防采集规则吗?

2016-04-15 10:47:35 +08:00
 vvwvv

最近想采集看准网的部分内容,但是老是被封,每次基本上被封两三天;不知道这里有没有朋友研究过他们的防采集? 怎么突破

2474 次点击
所在节点    问与答
11 条回复
leavic
2016-04-15 10:49:29 +08:00
先说说你做了哪些防封措施?
vvwvv
2016-04-15 11:02:13 +08:00
@leavic 做了 代理、已经休眠 比如 采集 30 条 休眠 1 分钟 ps :用的火车头····
leavic
2016-04-15 11:06:04 +08:00
1 :代理是 IP 池吗?单个 IP 或者不经常随机更换没有意义。
2 :采集 30 分钟休眠 1 分钟,这个机器特征太明显了,如果真要封当然可以找出来。而且连续爬 30 分钟,这个对服务器不是个小的负担,把每次请求的间隔增大个几秒可能更有意义,这样更接近人类访问。

真要搞,其实也只能大规模分布式爬了。
zqhong
2016-04-15 11:57:50 +08:00
可以看下这个:
https://github.com/ericls/vote_against_37/blob/master/main.py

这里面采用一种思路:在发送 HTTP 请求前,添加 X-Forwarded-For 请求头,值为随机 IP 。某些网站通过 X-Forwarded-For 来获取用户的“真实 IP ”。比如: www.ip138.com 这个网站。

关于 X-Forwarded-FOr :一般你使用代理的时候,代理服务器会在 HTTP 头里面加一个 X-Forwarded-For 来标识用户的真实 IP 。具体请看 wiki : https://zh.wikipedia.org/wiki/X-Forwarded-For


这是我最近爬取豆瓣电影写的一个爬虫,也可以看看:
https://github.com/zqhong/douban_movie

感觉很多方面还有待提高,欢迎提出 issues 。
popok
2016-04-15 13:51:50 +08:00
@zqhong 这个是 PHP 一个获取 IP 的函数, discuz 也是用的这个,被借用的比较广泛,但是 X-Forwarded-For 这个请求头,客户端可是自己设置,所以很多 php 的程序都可以被伪造 IP 。。

不过现在很多程序都把这个函数改了,不从 X-Forwarded-For 上读 IP ,所以看运气
popok
2016-04-15 13:52:03 +08:00
function GetIP(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknow";
return($ip);
}
manhere
2016-04-15 13:56:27 +08:00
只用 remote_addr 判断 IP ,怎么伪造
xiaoding
2016-04-15 14:04:54 +08:00
动态 vps
不过现在就算用动态 vps 我也有办法反爬,一整套方案。
crab
2016-04-15 14:29:49 +08:00
@xiaoding 按地区吗?不然的话 IP 不一样,缓存, cookies 都清空。
zqhong
2016-04-15 15:06:13 +08:00
@popok 是的,这个确实得看服务端怎么识别用户 ip 的。
justlikemaki
2016-04-15 17:09:24 +08:00
@xiaoding 能分享下么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/271242

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX