• PythonProject(1)vim的Hustoj插件


    打算写一个vim的插件,或者emacs的插件。可以在编辑器里打比赛,看rank,交代码。总之相当于一个桌面版的hustoj

    这是上学期就有的一个脑洞产物,昨天学了Python的爬虫,发现这个东西很有实现的可能嘛!

    不知道能坚持多久,我这个三分钟热度。。。

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    第一天

    用fairfox+httpfox弄明白了hustoj的登陆,提交过程。//没有学过各种网络协议只能说一知半解吧,主要是参考文章写的 http://www.jb51.net/article/57161.htm

      hustoj的登陆过程

      先post一组数据到login.action,伪装成浏览器就会返回succes了

      

    1     postdata = urllib.urlencode({
    2         'username':'helica',
    3         'password':''    #当然要插入你的密码!
    4     })

      hustoj的提交过程

      post一组数据的sumit.action(这里提交的代码是用base64加密的),保持登陆的cookie(?没有测试不保持)

      提交之后再给fetchstatus post一组数据,就可以返回你交的题的提交id了

      再之后就是定时访问getResult 获得提交题的状态

    当然,hustoj是开源的,我这样自己看数据包是不是太蛋疼了。。。

     1 # -*- coding: utf-8 -*-
     2 #
     3 #---------------------------------------------------
     4 #   爬虫:hustoj_spider
     5 #   作者: helica
     6 #   日期: 2015-8-12
     7 #   语言: py2
     8 #
     9 #
    10 #---------------------------------------------------
    11 
    12 import urllib
    13 import urllib2
    14 import re
    15 import cookielib
    16 
    17 global cookie
    18 cookie = cookielib.CookieJar()
    19 
    20 def login():
    21     global cookie
    22     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    23     
    24     postdata = urllib.urlencode({
    25         'username':'helica',
    26         'password':''
    27     })
    28 
    29     headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
    30 
    31     opener.addheaders = [headers]
    32 
    33     req = urllib2.Request(
    34         url = 'http://acm.hust.edu.cn/vjudge/user/login.action',
    35         data = postdata
    36     )
    37 
    38     result = opener.open(req)
    39 
    40 
    41     return result.read()
    42 
    43 def getInfo():
    44     global cookie
    45     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    46     headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
    47     opener.addheaders = [headers]
    48 
    49     req = urllib2.Request(url = 'http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66989#overview')
    50 
    51     result = opener.open(req)
    52     return result.read()
    53 
    54 def SubCode():
    55     global cookie
    56     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    57     headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
    58     opener.addheaders = [headers]
    59 
    60     submitdata = urllib.urlencode({
    61         'cid':'79121',
    62         'num':'C',
    63         'language':'3',
    64         'isOpen':'0',
    65         'source':'Ly9sZXQgbWUgZG8gYSB0ZXN0IHRvIGZpbmQgdGhlIHVybCBvZiB0aGUgYWRkIGkgc3ViIG15IGNvZGUKLy9pIHdhbnQgbWFrZSBhIHNwaWRlciBmb3IgbXkgdmltCi8vc28gdGhhdCBpIGNhbiBzdWJtaXQgY29kZSB2aWEgbXkgZWRpdG9yIFhE'
    66     })
    67 
    68     req = urllib2.Request(
    69         url = 'http://acm.hust.edu.cn/vjudge/contest/submit.action',
    70         data = submitdata
    71         )
    72     
    73     result = opener.open(req)
    74     
    75     return result.read()
    76 
    77 def getStatus():
    78     global cookie
    79     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    80     headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
    81     opener.addheaders = [headers]
    82 
    83 
    84 
    85 print login()
    86 #print getInfo()
    87 print SubCode()
  • 相关阅读:
    Android控件Editext、TextView属性详解
    修改Android签名证书keystore的密码、别名alias以及别名密码
    android 中如何限制 EditText 最大输入字符数
    keytool 错误 java.io.IOException: incorrect AVA format
    Android打包常见错误之Export aborted because fatal lint errors were found
    正则表达式之判断用户注册信息是否为汉字、字母和数字
    Android Dialog 系统样式讲解及透明背景
    Android中自定义Activity和Dialog的位置大小背景和透明度等
    字体在Android View中的输出 drawText
    怎么用CIFilter给图片加上各种各样的滤镜_1
  • 原文地址:https://www.cnblogs.com/helica/p/4725933.html
Copyright © 2020-2023  润新知