python + fiddler抓包测试

发布时间:2019-09-22 07:49:53编辑:auto阅读(1674)

    有个坑的选修课,要提交一个项目。我们小队不知道做什么,于是在讨论了一分钟后决定用python来写一个抓取学生成绩的app和分析(交完之后才上课,发现那老师基本全是搞硬件的,我瞬间没有要上课的想法了)。

    不管怎么样,学分还是要拿的。

    早写了个登陆界面。测试了下信息的输入,没有出错。

    接下来写模拟登陆。昨天用chrome抓了半天的包,就是找不到我的postdata哪出错了。

    今天用fiddler2代理python,断点分析才发现原来post的地址不应该是显示表格的地址。

    改了一下。成功模拟登陆,试了一下抓取课表,success!

    fiddler的代理地址为127.0.0.1:8888。

    用ProxyHandler处理一下fiddler的代理地址,然后绑定到opener里。

    然后就可以用fiddler监听到python的网络访问,设置断点,就可以方便地查看和修改发送和接收的包了。


    import urllib2
    import urllib
    cookies = urllib2.HTTPCookieProcessor()
    print 'UserNO:'
    UserNo = raw_input()
    print 'PassWord:'
    Passw = raw_input()
    
    headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Encoding': 'gzip,deflate,sdch','Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4','User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36'}
    url = 'http://jw.hrbeu.edu.cn/ACTIONLOGON.APPPROCESS?mode=3'
    url2 = 'http://jw.hrbeu.edu.cn/ACTIONLOGON.APPPROCESS?mode=4'
    kebiaourl = 'http://jw.hrbeu.edu.cn/ACTIONQUERYELECTIVERESULTBYSTUDENT.APPPROCESS?mode=1'
    #用fiddler分析
    #proxy = urllib2.ProxyHandler({'http':'127.0.0.1:8888'})
    #wopen = urllib2.build_opener(cookies,proxy)
    wopen = urllib2.build_opener(cookies)
    request = urllib2.Request(url = url,headers = headers)
    path = r"./agnomen.jpg"
    f=file(path,'wb')
    imageurl = 'http://jw.hrbeu.edu.cn/ACTIONVALIDATERANDOMPICTURE.APPPROCESS'
    imrequest = urllib2.Request(url = imageurl,headers = headers)
    response = wopen.open(imrequest)
    f.write(response.read())
    f.close()
    data={'submit.x': '0', 'WebUserNO': '', 'Agnomen': '', 'Password': '', 'submit.y': '0'}
    data['WebUserNO'] = UserNo
    data['Password'] = Passw
    print 'Agnomen:'
    agnom = raw_input()
    data['Agnomen']=agnom
    request = urllib2.Request(url = url2, data = urllib.urlencode(data),headers = headers)
    wopen.open(request)
    request = urllib2.Request(url = kebiaourl, headers = headers)
    response = response = wopen.open(request)
    htmlpath = r"./index.html"
    f=file(htmlpath,'wb')
    f.write(response.read())
    f.close()



关键字