Python实现BBS自动登录并发帖

初学Python有了一段时间,寒假里又看了一些Web编程方面的知识,就写了一个实现bbs自动登录和发帖的Python脚本

由于本人学校BBS站首页使用js加载,貌似通过首页登录不大可行,然后就分析表单,发现是通过POST一些data到特定的地址,之后

获取返回的cookie。这样就好办了,废话不多说,上代码。(初学,不够 Pythonic,见谅)

#-*-coding:utf-8-*-
#lilybbs.py
#Author:Sky_Money
#Python实现自动登录BBS并发帖

import urllib,urllib2

#帐号和密码,你懂的
username=''
password=''

baseurl='http://bbs.nju.edu.cn/vd45734/bbslogin?type=2'
postdata=urllib.urlencode({
    'id':username,
    'pw':password,
    'lasturl':''})
req=urllib2.Request(
    url=baseurl,
    data=postdata)
result=urllib2.urlopen(req).read()

#从返回的Content中抓取Cookie
start=result.find("('")+2
end=result.find("')")
cookie=result[start:end]

split1=cookie.find('N')
split2=cookie.find('+')

u_num=int(cookie[0:split1])
u_id=cookie[split1+1:split2]
u_key=int(cookie[split2+1:])
footkey=217872412

#下面是发帖验证
testUrl='http://bbs.nju.edu.cn/vd78013/bbssnd?board=test'

sendCookie="_U_NUM=%d;_U_UID=%s;_U_KEY=%d;FOOTKEY=%d"%(u_num+2,u_id
                                                       ,u_key-2,footkey)
#发送的Headers,必须要有Cookie
sendheaders = {
        'Host': 'bbs.nju.edu.cn',
        'Connection': 'keep-alive',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML,like Gecko) Chrome/15.0.874.121 Safari/535.2',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Encoding': 'gzip,deflate,sdch',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Accept-Charset': 'GBK,utf-8;q=0.7,*;q=0.3',
    }

sendheaders['Cookie']=sendCookie

#发帖的data主体
body=urllib.urlencode({'title':'test',
      'pid':'0',
      'reid':'0',
      'signature':'1',
      'autocr':'on',
      'text':'oh yeah'})
returnedReq=urllib2.Request(
    url=testUrl,
    data=body,
    headers=sendheaders)
returnedResult=urllib2.urlopen(returnedReq).read()
print returnedResult

代码一路到底,比较丑,就这样看看了

主要使用了urllib和urllib2模块。

先是登录问题,需要POST的数据可以通过FF+httpfox查看,这个比较方便。知道需要的数据之后就依样画葫芦,模拟发送即可。

其中发送的url中 /vd 后面跟的一串数字就是随机指派,这个其实可以通过随机数分配,没有特定的要求.

之后通过抓取发送得到的Cookie获取发帖‘令牌’,其中Cookie分为四部分,_U_NUM,_U_UID,_U_KEY,FOOTKEY,其中 _U_UID是用户名,_U_NUM和_U_KEY是返回的一串数值,需要注意的是,发帖是的Cookie需要将 _U_NUM值加2,_U_KEY值减2,这个比较奇怪,可能是本校bbs设置的问题。FOOTKEY貌似就是随意指派的一串数字。


以上就是自动登录并发帖的简单脚本,现在发现Python写这玩意还是挺好玩,接下来想考虑怎么登录WebQQ,这个貌似需要了解TX的QQ通讯协议了....

你可能感兴趣的:(Python)