免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 純白
打印 上一主题 下一主题

嘉兴学院公寓的PYTHON拨号上网方法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-08-19 11:53 |只看该作者
用urllib2这个模块比较好,再自己调整一下,就可以满足大部分需求了。用urllib2,你就基本上不需要考虑session和cookie的问题了。除非javascript或activex自己写了cookie的内容

关于sessionid,我觉得你有点误解了,sessionid作用不在于其本身的值,而在于服务器上对于这个session保存的变量内容。 activex用了另外一个sessionid来keepalive, 那么在那个sessionid上应该有相应的操作,使得服务器在这个session中存了一些变量而已。

论坛徽章:
0
12 [报告]
发表于 2007-08-20 16:41 |只看该作者
portallogindata看来是 个 鸡肋阿 ,我发送请求不带这个东西也照样成功。。。。。。害我还从浏览器里找了那么久。。。。。。。。
      portallogindata这个到底是用来做啥的???网上GOOGLE了 好久,都找不到资料。

论坛徽章:
0
13 [报告]
发表于 2007-08-20 20:06 |只看该作者
1天。。。囧。。。。

论坛徽章:
0
14 [报告]
发表于 2007-09-27 21:40 |只看该作者
#!/usr/bin/env python
#Filename: jxxyhh.py
import string, getopt, sys, httplib, urllib, time

def main():
    #定义一堆头文件>_<!
    HOSTNAME = '10.254.0.9'
    ip='220.189.67.3'
    username='2004090600010'
    password='111111'
    #portallonindata是用于保存自己电脑的用户名密码的,抓包新发现
    #。。。BS下狗日的华为,哈哈!
    #开始第一轮连接,不带JSESSIONID的,目的是从服务器获得一个用于后续的连接。
    headers = {'Accept-Language':'zh-cn','Accept-Encoding': 'gzip, deflate','User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0;           Windows NT 5.0)','Host': HOSTNAME ,'Connection':' Keep-Alive',
        }
    conn = httplib.HTTPConnection(HOSTNAME)
    conn.request('GET', '/', None, headers)
    response = conn.getresponse()
    s = response.read()
    print s
    cookie1 = response.getheader("Set-Cookie"
    print "=====Cookie1====", cookie1                     #就是这个cookie
    a=cookie1[207:221]                                    #a是JSESSIONID,笨人用笨办法了,嘿嘿。
    print a
    #准备第二次的连接,用于POST自己的挨劈地址=_=!这里调了好久,

    headers = {'Accept': ' image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*','Referer': 'http://10.254.0.9/',   'Accept-Language': 'zh-cn',  'Content-Type': 'application/x-www-form-urlencoded','Accept-Encoding': 'gzip, deflate','User-Agent':         'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1:SV1)','Host': HOSTNAME ,'Connection':' Keep-Alive','Cache-Control':' no-cache',
        'Cookie': 'cookieEnableTest=cookieEnable; isPNP=0; needActiveX=1,JSESSIONID='+a,
        }
    #这一步我这里不能少, 需要发送自己的IP, 这里的IP在后面会和刚才session联系起来, 以后keep-alive的参数要用到
    #登录http://10.254.0.9/webLogin.jsp
    conn = httplib.HTTPConnection(HOSTNAME)
    conn.request('POST', '/webLogin.jsp', "LocalIP=" + ip, headers)
    response = conn.getresponse()
    s = response.read()
    print s                                        #刚开始时,老是NOCOOKIE,头大-_-!




    #第三步, 这是最关键的一步, 就是发送认证信息的请求

    #third https://10.254.0.9/secu/webLogin.jsp,开始时候定义下SSL发送头
    params = urllib.urlencode({'connectname':'',
    'connecttype' : -1,
    'consumeright' : 0,
    'separatecard' : 0,
    'localip' : ip,
    'IsIndex' : 0,
    'username' : username,
    'password' : password,
    'cookiedate' : 0})


    print '===params===',params
    conn.request('POST', '/secu/webLogin.jsp', params, headers)
    #在WINXP下这里老出错!在LINUX下没有问题。应该是在WIN下的包安装不完全的原因。
    response = conn.getresponse()
    s = response.read()
    start = string.find(s, HOSTNAME)
    end = string.find(s, "')", start)
    s = s[start:end]
    URL = s
    cookie3 = response.getheader("Set-Cookie"
    print URL
    print "cookie3----->>>",cookie3
    #第四步, 获取注册信息,这是keep-alive的关键步骤,这里的请求地址是上个response返回的.

    #four get regist parameters
    conn = httplib.HTTPConnection(HOSTNAME)

    headers = {'Accept': ' image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*',
        'Accept-Language':'zh-cn','Accept-Encoding': 'gzip, deflate','User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)','Host': HOSTNAME,    'Connection':' Keep-Alive', 'Cookie': 'cookieEnableTest=cookieEnable; isPNP=0; needActiveX=1; JSESSIONID='+a,
        }

    start = string.find(URL, "/"
    end = string.find(URL, "?", start)
    URL2 = URL[start:end]
    params = URL[end+1:]
    print URL2,
    print headers
    print "=====params====", params
    idnum=params[13:26]
    print "==numkey==",idnum
    conn.request('GET', URL2, params, headers)
    response = conn.getresponse()
    s = response.read()
    print "主要注册信息网页"
    print s

    #是服务器应答的大括号你的东西。
    #loginstr = s[start:end]
    print "新截取的信息"
    ac=s[2697:3090]
    print ac
    #loginstr = s[start:end]


    loginstr = ac
    loginstr = string.replace(loginstr, "\r", ""   
    #string.replace(string1,a,b) 把把STRING1字符串里面的A,全部替换成B
    loginstr = string.replace(loginstr, "\n", ""
    loginstr = string.replace(loginstr, " ", ""
    loginstr = string.replace(loginstr, "'", ""
    print loginstr

    L = string.split(loginstr, ',')
    print '=====L====',L
    user = L[0]
    isnno = 1204
    loginkey = L[6]
    ip2 = L[7]
    #是服务器应答的大括号你的东西。


    #loginstr = s[start:end]
    #的格式应该类似于 2004090600010,.. 1,..0,..0,..2,..1000,....mGyL0TosmUBo4GyKIvA2-RBhVr4vznuxkQA9,..1   

    #第五步, 这时已经获取了注册信息,但是还不能keep-alive, 这一步是请求一个新的sessionID, 这个ID才是keep-alive用的
    #这个是网络上铁通用户的说法,自己抓包也是这样,可是我一直用初始的JSSESSIONID也没问题,成功了7小时.

    path='/ClientProcess.jsp?MsgType=2&UserName=%s&LocalIP=%s&SeparateCard=0&ISNNO=1024&LoginKey=%s&isPNP=0&httpIP=%s HTTP/1.0' %(username,ip,loginkey,ip)

    print '===path===',path

    conn = httplib.HTTPConnection(HOSTNAME)

    headers = {'Accept': 'text/html', 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)','Cookie':cookie1}

    print  headers
    conn.request('GET', path, None, headers)
    response = conn.getresponse()
    s = response.read()
    print s
    klcookie = response.getheader("Set-Cookie"
    print "=====klCookie====", klcookie


    #这里新的JSESSIONID没获取成功!*_*!
    #重要参数列表:loginkey:kl-cookie:还有一个数字ID(?貌似不重的。):大致就这些了。^_^
    print '====user====', user
    print "=====loginkey====",loginkey
    print "===idnum====",idnum
    #最后几步了。
    headers = {'Accept': 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */* ',
        'Accept-Language': 'zh-cn','Accept-Encoding': 'gzip, deflate','User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)',
        'Host': HOSTNAME, 'Connection': 'Keep-Alive',
        'Cookie':'cookieEnableTest=cookieEnable;isPNP=0;needActiveX=1;JSESSIONID='+cookie1
        }
    path = '/myportal/myindex.jsp?key='+idnum+' HTTP/1.0'
    print path
    conn = httplib.HTTPConnection(HOSTNAME)
    print headers
    conn.request('GET', path, None, headers)



    #要用的东西。。。。。。
    pathx = '/ClientProcess.jsp?MsgType=1&ISNNO=1000&LocalIP=%s&LoginKey=%s&isPNP=0&httpIP=%s HTTP/1.0' %(ip,loginkey,ip)
    print pathx
    headersx = {'Accept': 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */* ',
        'Accept-Language': 'zh-cn','Accept-Encoding': 'gzip, deflate','User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)',
        'Host': HOSTNAME, 'Connection': 'Keep-Alive','Cookie ': ' JSESSIONID= '+cookie1
        }
    print headersx
    conn = httplib.HTTPConnection(HOSTNAME)
    conn.request('GET', pathx, None, headersx)

    #每5分钟保持连接的调用函数
    def kl(HOSTNAME,pathx,headersx):
        conn = httplib.HTTPConnection(HOSTNAME)
        conn.request('GET', pathx, None, headersx)

    for i in range(1,120):
        time.sleep(300.0)
        kl(HOSTNAME,pathx,headersx)
    else:     
        print "Too long ! if you need ,you can retry!"     

main()  



以上这个是最新的的.
图形化的界面正在努力做

论坛徽章:
0
15 [报告]
发表于 2007-09-28 20:50 |只看该作者
不错啊。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP