校内网(.com)刷人气小析

来源:互联网 发布:红包尾数软件下载 编辑:程序博客网 时间:2024/04/29 06:18

(本文仅以研究为目的)

今天无意中看到一些校内网(千橡的)刷人气的软件(好几个月之前的方法,有些现在无效了),就顺手研究了一下。

它们的大概原理就是大量的访问别人的页面,自己就会在对方的“最近谁看过我的页面”的栏目那里,然后等着别人回访就行了。如果回访率有 1/10,那么访问 10000  人就会有 1000 个人回访自己的页面了,很划算。

其实针对 xiaonei.com 可能很容易的写一个自动访问别人页面的程序。网上的方案里面大多如下:访问其中一个人的页面,然后就从对方的“最近登录的好友”那里选一个人的号码访问,如此不断下去。但是现在校内网已经针对这种方案采取了措施,就是不属于同一个网络(比如同是加入清华大学的就算是在同一个网络)的就默认不能访问互相的页面。但是,校内网采取的这样的做法似乎就将不同网络的人群分隔了,减少不同网络之间信息的分享。

其实针对校内网的这种措施也很容易破解。根据我的实验,只要保证访问的同学与自己是在同一个网络基本上不会有任何限制。所以只要搜索出与自己同校的所有人的 ID 号,做成一个列表然后访问就行。我使用 Python 编程从校内网的搜索页面(/Search.do?action=university&year=null&univ=yyyyy&curpage=xxx)抓取 ID 号制作成一个几千人的列表,然后再编程模拟登录网站然后再访问这些页面。排除校内网设置的各种限制,一个晚上访问几万人的页面不成问题。

本来在校内网中,每访问 100 人的页面就会要求填写验证码。但是这个验证的页面是任何时候都可以进去的,只要填写了验证码就可以再访问 100 人。最近这个验证制度好像有问题(2月8日),根本什么都不填竟然也能通过验证,估计是工作人员还没做好这个功能就去过年了。

校内网中的大多数功能都不需要填写验证码,所以访问页面、加好友、打招呼等大多数功能都可以写个程序来看上去完成。如果到时所有这些功能都加上了验证码,那么对于用户来说可就麻烦了。

人们使用程序来“刷”校内网就是为了刷个人气,希望自己成为“人气之星”。目前校内网对于“人气”的方案是:只要有一个人访问自己的页面,就增加一个人气值,同一人多数访问不算。基于这种规则,除非校内网未来设置成只要访问别人的页面就需要填验证码(变成这样的话就太惨了),否则就很容易使用程序来自动访问。

注册码的机制是目前用来防止自动程序的攻击的普遍方法,但他也降低了网站的易用性。也许校内网应该设计新的“人气”方式。比如不是只要访问主页面就增加一个人气,必需访问主页面后再访问这个人的其它页面才行等等。

 下面列举几个我测试了可以用来刷的几个方面:

1. 获取同校成员列表。在/Search.do?action=university&year=null&univ=yyyyy&curpage=xxx 页面中找出所有与自己同一个大学的人员的 ID 存成一个列表。后面可以直接使用这个列表。重点是最好用浏览器看好一共有多少个页面,直接从第一页抓到最后一页(好像越往后的号码活跃度越不高)。下面是部分 Python 写的代码。

2. 自动访问他人页面。上一步得到的列表可以给自动访问程序使用。程序没有什么难度,就是 GET 或 POST 而已。重点是访问 100 个人就要去一下验证页面验证一下。

3. 不但可以访问别人的页面,还可以给别人留言。一般人看到一个陌生人留言,都会去其主页看看自己是否认识。所以也可以达到回访的目的。重点是留言时,短时间内不能发相同的内容,要不然网站会提示错误信息。所以写好几个不同的留言,发留言时循环使用就行。如果以后加入了验证码的机制,这方法就不行了。

4. 除了可以访问自己所在的大学的网络外,还可以访问与自己在同一个地域网络的人员。比如,先把自己的地域网络设置成北京市,然后浏览 xiaonei.com/network.do?nk=xxxxxxxx(地域代码) 时会进入“随便看看”状态,这里网站会列出一些人员。只要地域还没有修改,把这个列表抓下来就能用程序访问。之后再换成另一个地域用同样的方法就可以访问很多原来与自己不是同一个网络的人员的页面了。如果地域只能改一次,或修改时要人工验证,这招就不行了。

5. 加为好友和打招呼。加好友和打招呼几乎没有网络限制,“谁可以向我发送好友请求”默认也是设为“所有人”的。不过打招呼消耗积分,而加好友什么限制也没有。如果以后加入了验证码的机制,这方法也不行了。

 

刷的程序我是用 Python 写的,基本代码如下:


def send_msg(ids):
    email = raw_input('
Please input Email: ')
    pwd = raw_input('
Please input Password: ')

    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    exheaders = [("
User-Agent","Mozilla/4.0 (compatible; MSIE 7.1; Windows NT 5.1; SV1)"),]
    opener.addheaders=exheaders
    url_login = '
http://xiaonei.com/Login.do'
    body = (('
email', email), ('password', pwd))
    login = opener.open(url_login, urllib.urlencode(body)).read() # 得到 Cookie 了

    
for id in ids:
        msg = {'
body': get_msg(), 'curpage':'', 'from':'main', 'cccc':'', 'id':id, 'cc':id } # get_msg() 是要表达的留言
        url = '
http://xiaonei.com/gossip.do'
        data = opener.open(url, urllib.urlencode(msg)).read()

ids = read_ids("
IDs.txt") # 首先要有一个想要留言的 ID 的列表
send_msg(ids)

原创粉丝点击