python登录代码思路_用python登录Dr.com思路以及代码分享

用python登录Dr.com思路以及代码分享

发布于 2014-08-28 22:31:52 | 192 次阅读 | 评论: 0 | 来源: 网友投递

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

如今一般的大学校园或者公寓都是通过客户端来限制路由器使用,基本上都是Dr.com客户端,有的是登录样式,有的是插件样式。下面我们来说说python定制自己的客户端

前提:isp得支持web登录的方式。

说明:每个ISP的登录页面不一样,不过我估计算法都是一样的,于是解决方案应该也是相似的,只是表单的key可能不太一样。

首先,分析登录页面。

页面head镶嵌了

部分HTML

...

账号 Account

密码 Password

 

...

这里可以看见,点击submit的时候,调用cc(0),提交的时候调用ee()函数

部分js:

function cc(ss) {

f0.R1.value = ss;

}

function ee() {

if (f1.DDDDD.value == "") {

alert("请输入您的账号 Please enter your account account number");

return false;

}

f0.DDDDD.value = f1.DDDDD.value

if (ps == 0) {

f0.upass.value = xproc1(f1.upass.value);

} else {

tmpchar = pid + f1.upass.value + calg;

f0.upass.value = calcMD5(tmpchar) + calg + pid;

f0.R2.value = 1;

}

document.f0.submit();

return false;

}

显然,点击提交后,会对f0进行一系列赋值,如果没有问题就会提交f0

f0:

参考js里的内容,用python的dict表示f0的话有如下的伪代码:

f0={}

f0["DDDDD"] = f1['DDDD']

f0["upass"] = calcMD5(pid + f1['upass'] + calg) + calg + pid;

f0["R1"] = ss

f0["R2"] = 1

f0["para"] = 00

f0["0MKKey"] = 123456

其中 ss、pid、calg都是常量,f1['DDDD']、f1['upass']分别是用户输入的用户名和密码字符串

关键在于calcMD5的算法。

从函数名和函数本身来看,这个函数是MD5的一种实现。然而对js代码进行移植的过程中出现了一些问题:js和python的移位操作表现不同。

既然整个f0['upass']字段除了用户输入的密码以外,其它都是常量,完全可以用js计算出f0['upass'],python中只要保存这个字符串就行了。

检查cookies发现整个网页没有使用cookies。

登录后跳转到登出页面,分析登出页面发现,登出只需要访问某个特定的网页就行了。

于是整个思路很简单,pos登录服务器实现登录,get指定网页登出。实现代码如下:

import sys

from urllib import urlencode

from urllib2 import urlopen

username = "s10********"

upass = "6696a3***********************************"

LOGIN = "http://202.1**.***.***/"

LOGOUT = "http://202.1**.***.***/F.htm"

def post(url, data=None):

if data:

data = urlencode(data)

response = urlopen(url, data)

return response.read()

def login():

data={}

data["DDDDD"] = username

data["upass"] = upass

data["R1"] = 0

data["R2"] = 1

data["para"] = 00

data["0MKKey"] = 123456

post(LOGIN, data)

pass

def logout():

post(LOGOUT)

def main(argv):

if argv[0] in ('login','in','i'):

login()

elif argv[0] in ('logout','out','o'):

logout()

pass

pass

if __name__ == '__main__':

main(sys.argv[1:]);

相关阅读:

用python登录Dr.com思路以及代码分享

用Python登录Gmail并发送Gmail邮件的教程

Python实现购物程序思路及代码

python查找第k小元素代码分享

Python 实现 贪吃蛇大作战 代码分享

用python + openpyxl处理excel2007文档思路以及心得

python模拟登录百度代码分享(获取百度贴吧等级)

python登录QQ邮箱发信的实现代码

用Python编写一个国际象棋AI程序示例代码

用Python代码来解图片迷宫的方法整理

用Python代码来绘制彭罗斯点阵的教程

用Python实现web端用户登录和注册功能的教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值