python自动登录程序_用python些自动登录程序

一直想用python做一个我们学校bbs的自动登录程序,可一直拖到现在,昨天才仔细研究了下。

首先,学校的bbs分为好几个框架,通过javascript加载,于是不能从首页着手。

查到他的左边登录的url,打开后查看源码。它post了一个表单,表单里有用户名和密码。在post前,用户名和密码通过下面的脚本做了验证,不过没有做变换。表单的action属性也是在这生成的,找到了action就知道往哪个地方投送用户名和密码了。

Net.Form={

check:function(a,c)

{

if(c=="login")

{

if(!a.id.value.match(/[A-Za-z0-9]{2,12}/))

{

alert("请输入正确的id");

a.id.focus();

return false

}

if(a.pw.value=="")

{

alert("请输入密码");

a.pw.focus();

return false

}

try

{

a.lasturl.value=Net.BBS.getUri($f("f3"))

}

catch(b)

{

}

a.action="/vd"+parseInt(Math.random()*100000)+"/bbslogin?type=2"

}

},

Net.BBS={

getUri:function(b)

{

var a=b.location.pathname.replace(/(//vd/d+//)/,"/").substr(1);

return(a.indexOf("bbsmain")==-1)?escape(a+b.location.search):""

},

escape:function(s)

{

return String(s).replace(/&/g,"&").replace(//g,">")

}

根据上面的处理,用python就很容易写出一个登录程序了

#login

userdir='/vd'+"%0d"%random.randint(0,100000)

logapp='/bbslogin?type=2'

url=baseurl+userdir+logapp

formvalues={'id':'userid','pw':'xxxx','lasturl':'bbs.nju.edu.cn/bbsmain'}

para=urllib.urlencode(formvalues)

req=urllib2.Request(url,para)

response=urllib2.urlopen(req)

the_page=response.read()

print the_page

登录成功后,返回一个页面,会设置cookie。如果之后要发文就必须设置cookie项,否则bbs认为没有登录。

设置cookie的代码如下:

setCookie:function(a)

{Net.Cookie.set("/x5F/x55/x5F/x4E/x55/x4D",parseInt(a,10)+2);

Net.Cookie.set("/x5F/x55/x5F/x55/x49/x44",a.substring(((parseInt(a,10)+2).toString(10)).length+1,a.indexOf("+")));

Net.Cookie.set("/x5F/x55/x5F/x4B/x45/x59",parseInt(a.substring(a.indexOf("+")+1),10)-2)

}}

set:function(a,b){

if(b==""){

document.cookie=a+'=""; expires="Thu, 01 Jan 1970 00:00:01 GMT"'

}else

{

document.cookie=a+"="+escape(b)

}

},

这里有几个问题要注意:

第一、"/x5F/x55/x5F/x4E/x55/x4D",这只是个普通的字符串,不过是用16进制的ASCII码表示

第二、知道cookie后的发送

cookie是http服务器用来在本地保存数据的方式,浏览器在发送http请求时作为头发送出。

urllib2.Request函数第三个参数就是http头,构造完cookie后传递给他即可。

cookie="_U_NUM=%d;_U_UID=%s;_U_KEY=%d;"%(num,ckk[1],key)

print cookie

header={"cookie":cookie}

postpage='/bbspst?board=test'

url=baseurl+userdir+postpage

print url

req=urllib2.Request(url,headers=header)

response=urllib2.urlopen(req)

the_page=response.read()

总结:

自动登录脚本主要要注意两个地方,第一是如何post用户名和密码,第二是如何生成cookie以保持登录状态,这两个弄明白后登录一个网站就不是什么大问题了。当然,有的网站要求输入验证码,如果绕不开的话就难喽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值