用Python获取KIDSFC的红包信息之全自动本地版

标签:Python

老版本的还要弹个IE窗口出来手动领取,新版本会自动领了,还会提示领了多少,并且改进了性能~

需要用到ClientCookie这个模块,自己去下载吧~
有时候会遇到无法获取cookie的错误,需要用IE登录下论坛,再关闭IE。

稍微修改下就能用Firefox的cookie,不过我不常用Firefox,所以就只做了IE版本。
此外,Windows 9x的cookie需要提供用户名,我也没加。
需要修改上述2点的话,请按ClientCookie文档来改。
# -*- coding: gbk -*-

import ClientCookie
import sched
import time

s = sched.scheduler(time.time, time.sleep)

url = 'http://bbs.kidfanschannel.net/discuz/plugin.php?identifier=get_money&module=money&action=money_get&hid=2'

cj = ClientCookie.MSIECookieJar(delayload=True)
cj.load_from_registry()
opener = ClientCookie.build_opener(ClientCookie.HTTPCookieProcessor(cj))
ClientCookie.install_opener(opener)

def main():
  global url

  res = ClientCookie.urlopen(url)
  html = res.read()
  res.close()

  print time.strftime('%Y-%m-%d %X :', time.localtime(time.time())),

  if html:
    content = unicode(html, 'gbk')                # 不转成unicode就无法用find查找unicode
    i = content.find(u'还有')                     # '还有'后面那个数字就是红包数目
    if i < 0:
      print '无法获取cookie,请确保IE能直接登录论坛,并关闭IE!'
      exit()
    elif content[i+2] != '0':
      print '有红包。',

      i = html.find('formhash=')
      formhash = html[i:i+17]                     # formhash信息
      data = formhash + '&hid=2&hsubject=&money_get=%C1%EC%C8%A1%B8%C3%BA%EC%B0%FC'
      res = ClientCookie.urlopen(url[:-6], data)  # 不需要'&hid=2'

      html = res.read()
      content = unicode(html, 'gbk')
      i = content.find(u'领取了')
      if i < 0:
        print '无法领取,可能是你今天的红包已经领过了。'
      else:
        money = content[i+3:i+5].isdigit() and content[i+3:i+5] or content[i+3:i+4]
        print u'领取了%s金币。' % money
      exit()
    else:
      print '没有红包。'

  else:
    print '连接失败,请检查网络连接!'

  s.enter(60, 1, main, ())                       # 每60秒查询一次
  s.run()

if __name__ == "__main__":
  main()
感觉ClientCookie这个模块绝对是个危险的东西。

似乎还没人做论坛的自动打劫机器人,我就不掺合了~

0条评论 你不来一发么↓

    想说点什么呢?