首页 > 知乎精选 > 移动互联网 > REG007搜索出注册过的网站的实现原理是什么?
2015
11-01

REG007搜索出注册过的网站的实现原理是什么?

知乎用户

我表示这是一个爬虫,根据你输入的邮箱或者手机号去试看看有没有注册过。
这个网站应该有一个常见网站的类表,其中包括大家可以看到的网站logo、网站类别、介绍等等
然后当你输入了邮箱或者手机号的时候,它会识别出来是邮箱还是手机号,然后你想一下如果你想知道自己男神或者女神有没有注册过某个网站你会怎么做?肯定是去试着注册啊,对不对?
需要做的就是在注册注册页面的相应位置输上邮箱或者手机,当光标离开那个输入框时就会看到输入框右边的图片或者文字从正在检查状态变成可以注册或者已注册,对吧。
然后那个网站做的就是模拟上面这个过程,从自己存储的那个网站列表里把每个网站都试一遍,你一定想知道怎么试。在注册的时候大家发现页面并没有刷新对吧,这用到了叫做Ajax的技术来做的网页内容的局部刷新(就像前面提到的从正在检查状态变成可以注册或者已注册),这个过程是浏览器与服务器是有一个交互的,而这样一个交互通过浏览器是可以把请求的内容捕获到的,然后服务器收到请求处理后会把结果告诉你(注册了还是没注册),这样试一圈就知道你都注册了那些网站,当然肯定不全,可能也有没注册提示注册的软广告。这个在这里不做讨论。
有人可能好奇这个神奇的过程是怎么发生的,大家试试下面两个地址吧,把里面的相应部分改成想测试的手机号和邮箱,然后看看返回的结果有什么差别。

有的同学说这个网站很诡异,一把自己的邮箱或者手机提交他就帮你注册了一个账号。针对这种情况我来解释下。

我之前的答案提到过这个网站搜集了各大网站ajax验证邮箱手机的地址,“伪造”注册时正常的验证请求,根据得到的响应来判断是否注册的。

但是,并不是所有的网站都用ajax异步刷新的技术,也不是所有利用异步刷新的都可以在不注册的情况下就判断出是否已经注册(这句话写完自己读着都好奇怪,继续往下读吧)。

拿知乎举例吧,知乎在注册时只会发一个请求给服务器,当然是在邮箱格式js验证正确的情况下才会发送,之后等来的有两种情况,一种是注册成功进行跳转,另外一种可能就是提示邮箱已经被注册,用浏览器捕获到它发过来的json信息如下:

效果就是“该邮箱已注册 · 直接登录”这几个字:
REG007搜索出注册过的网站的实现原理是什么? - 第1张  | 极客思维

简单的说就是:想要查看你有没有在知乎注册,就要帮你点下注册按钮才会根据结果,判断你是不是注册过。在帮你验证是不是注册过的同时可能又改变了这个结果(就像无法用火把去照亮黑暗一样),好凌乱的结果呀。

其他的网站也有这样的,在注册按钮点下之前你永远不知道能不能注册成功。这样设计的优点就是可以更少的暴露出网站的设计细节,注册的整个过程就是一个黑盒,看到结果之前你不会直到结果。

最后编辑:
作者:管理员
呃...怎么介绍呢?就是个管理员吧~
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!