最近在写爬虫,发现一个干死 99.9999%爬虫的办法

2016-09-15 16:17:00 +08:00
 doubleflower

如果,在网站的页面里随机插入坏链接,或在检测到是爬虫时,返回无限大响应的请求,比如发送无限大的永不结束的 http header ,或用 chunked 编码返回无限的大压缩率数据来直接撑暴对方服务器内存。

据我所知,现在的 http 库都没有处理这种情况,比如 python 的 urllib3/requests/pyCURL 等。

下面随手写的一个小程序来模拟一个无限大响应,我的爬虫处理不了这种情况啊!如果有人想这样干我我一点办法都没有的!(这里还没用压缩数据,一用的话内存马上就暴了)

有谁知道有处理这类情况的库?

爬虫代码:

import requests
r=requests.get('http://localhost:8888', timeout=20)

程序:

#!/usr/bin/env python2
import socket
from time import sleep


host = ''
port = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
data = conn.recv(4096)
print data
headers = [
    'HTTP/1.1 200 OK',
    'Server: FuckingServer',
    'Content-Type: text/plain',
    'Transfer-Encoding: chunked',
]
conn.send('\r\n'.join(headers))
conn.send('\r\n\r\n')

data = '5\r\nFuck!\r\n2\r\n\r\n\r\n'*10000
end = '0\r\n\r\n'
while True:
    conn.send(data)
    sleep(1)
    print '.'
conn.close()
15811 次点击
所在节点    奇思妙想
40 条回复
imcocc
2016-09-15 18:11:48 +08:00
楼主不知道七伤拳 伤人先伤己吗
Troevil
2016-09-15 18:23:26 +08:00
爬虫会控制深度吧 不可能无限循环下去的吧
thinks
2016-09-15 21:04:30 +08:00
@greatghoul 确实很寂寞,和我写防火墙策略一样了,结果一年过去了连条深层一点的端口扫描纪录都没有…
wangxiaoer
2016-09-15 21:24:20 +08:00
笑死了,你这个杀敌一万,自损八千啊,你服务端维持那么多长连接你扛得住?再说了,定向爬取都特么要到源码分析抓取地址的啊?你这种小伎俩分分钟过滤掉啊
est
2016-09-15 21:47:05 +08:00
都没我的策略淫荡。。。判断是爬虫就随机插入脏数据。。。。。

比如电商。。就随机返回价格。。。让你们爬。 管够。
scnace
2016-09-15 23:09:39 +08:00
@greatghoul 截屏 ocr 有 demo 吗?好像看看🐸🐸
jyf007
2016-09-16 12:14:50 +08:00
@est 高到哪里去都不知道了
veelog
2016-09-16 15:51:41 +08:00
你们这样做有考虑过浏览器的感受吗??除非你能识别是浏览器请求还是爬虫请求
ty89
2016-09-20 18:42:23 +08:00
满桶水不响,半桶水响叮当
doubleflower
2016-09-20 19:15:56 +08:00
@ty89 DSB
soulmine
2016-09-21 01:23:37 +08:00
@est 我遇到过 爬了半个月 发现里面一半真的一半假的 然后 TM 还不知道哪些真的哪些假的 ....
tsungkang
2016-09-22 18:03:37 +08:00
写了半年多爬虫的半桶水路过,其实只要是你用浏览器能访问到的一切东西,都能用爬虫来爬,干翻爬虫其实不用这么麻烦,一个牛逼的验证码,或者要求注册帐号,一下子就没辙了。
个人不建议去搞一些可能会牺牲用户体验的设计,之前爬过一个某机构的站(不止我们,还有很多人也在爬他们,我也不想去爬,只是领导安排而已),后来貌似对方知道了,一气之下加了一些判断,有时候故意卡个 1 、 2 分钟,写的爬虫倒是 30 秒搞不定就放弃换 ip 了,反而我用浏览器正常访问,有时候也被卡,严重影响用户体验。
yanzixuan
2016-09-28 17:49:47 +08:00
@greatghoul 真相了。
最大的笑话就是程序员不光找不到女朋友,就连爬虫都对你没兴趣。。。
yanzixuan
2016-09-28 17:52:02 +08:00
@greatghoul 弱问, phatomjs 的 eval 是沙盒,开多个但载入网页也是独立的么?
greatghoul
2016-09-28 21:35:25 +08:00
@yanzixuan 这个真没有研究过,以后用 firefox 作浏览器的时候,是可以多开的,彼此也可以隔离, phantomjs 应该也能做到彼此独立吧。
Technetiumer
2016-09-29 12:24:42 +08:00
Slowloris ?
lyz8
2016-09-30 22:05:13 +08:00
写爬虫都是设置 5 秒超时的
pyufftj
2016-10-02 20:48:48 +08:00
这样对网站的 seo 也是很不好的,毕竟 google 之流才是最大的爬虫
dongfang
2016-10-04 18:13:45 +08:00
@greatghoul
>最寂寞的就是写了一堆反爬虫的策略,发现都没有生效过,没人来爬。。。

233333
good758
2017-12-22 11:06:54 +08:00
然后 百度谷歌也不喜欢了。

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

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

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

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

© 2021 V2EX