失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python话费充值_用Python方法查询移动手机余额话费的源码示例

python话费充值_用Python方法查询移动手机余额话费的源码示例

时间:2018-07-25 18:59:57

相关推荐

python话费充值_用Python方法查询移动手机余额话费的源码示例

Python语言的应用范围很广泛,今天看到有人用python写的代码,完成了查询手机(移动)话费的功能,感觉很强大。特别搬过来给伙伴们欣赏欣赏。

这里需要说明的是,代码试用是需要使用手机号码和服务密码的,所以此程序仅供学习之用,还请大家谨慎测试。

#!/usr/bin/env python

#encoding=utf-8

import Image

import sys

import urllib, urllib2, cookielib

import cmd

import re

import StringIO

class Mobile(cmd.Cmd):

def __init__(self):

cmd.Cmd.__init__(self)

self.intro= """

请输入 help 查看帮助

"""

self.prompt = "Yidong> "

self.form = {

'submitMode':'2',

'ErrorUrl':'../briefLogon.do',

'ReturnURL':'www./newecare/common/prior.jsp',

'FieldID':'1',

'entrance':'IndexBrief',

'mobileNum':'',

'logonMode':'1',

'servicePWD':'',

'randCode':'',

'smsRandomCode':''

}

self.formAction = 'http://www.//portal/servlet/LoginServlet'

self.mobilePage = 'http://www./newecare/common/prior.jsp'

#

cookie = cookielib.CookieJar()

cookie.clear()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

opener.addheaders = [

('User-agent', 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Safari/534.30'),

('Referer', 'http://www./portal/briefLogon.do'),

('Accept-Language', 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3'),

('Accept-Encoding', 'gzip, deflate'),

('Host', 'www.'),

]

urllib2.install_opener(opener)

def _getCode(self):

urlImg = '/portal/sms/briefValidateCode.jsp'

imgs = (

(0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,),

(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,),

(0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,),

(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,),

(0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,),

(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,),

(0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1

23be

,1,1,1,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,),

(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,),

(0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,),

(0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,)

)

fp = StringIO.StringIO(urllib2.urlopen(urllib2.Request(urlImg)).read())

im = Image.open(fp)

im = im.crop((8,5,52,20))

code=''

for i in range(4):

im_new = im.crop((11*i,0,11*(i+1),15))

width, height = im_new.size

l = []

for i in range(width):

for j in range(height):

c1, c2, c3 = im_new.getpixel((i, j))

if (c1 < 40) and (c2 < 40) and (c2 < 40) :

l.append(1)

else:

l.append(0)

n=0

for img in imgs:

same=0

for i in range(165):

if img[i] == l[i]:

same += 1

if same > 150:

code += str(n)

break

n += 1

return code

def do_ye(self, info):

'''

查询话费: Yidong>ye 手机号码 服务密码

Yidong> ye 15153006103 888888

'''

arg = info.split(' ')

if len(arg) <> 2:

print 'error 89!'

return 0

print 'waiting ... ',

sys.stdout.flush()

self.form['mobileNum'] = arg[0]

self.form['servicePWD'] = arg[1]

self.form['randCode'] = self._getCode()

req = urllib2.Request(self.formAction, urllib.urlencode(self.form))

doc = urllib2.urlopen(req).read()

reU = pile('(www./newecare/common/prior.jsp;ssojsessionid=\S+)"', re.S)

result = reU.findall(doc)

try:

doc = urllib2.urlopen(urllib2.Request('http://'+result[0])).read()

doc = urllib2.urlopen(urllib2.Request('http://www./portal/servlet/CookieServlet?FieldID=2')).read()

except:

print 'error: 98!'

return 0

reA = pile("'(\S+)'", re.S)

result = reA.findall(doc)

url = 'http://www./newecare/loginAttritd.do?Attritd=%s&randnum=6010.6788671377135&menuID=null' % (result[0])

urllib2.urlopen(urllib2.Request(url))

doc = urllib2.urlopen(urllib2.Request('http://www./newecare/loginSuccess.jsp')).read()

reYE = pile("您的余额:(\S+)元", re.S)

result = reYE.findall(doc)

try:

print result[0]+"元"

except:

print 'error: 109!'

def main():

mobile = Mobile()

try:

mobile.cmdloop()

except KeyboardInterrupt:

print "bye"

if __name__ == "__main__":

main()

玩蛇网文章,转载请注明出处和文章网址:/code/other/o2449.html

相关文章 Recommend

如果觉得《python话费充值_用Python方法查询移动手机余额话费的源码示例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。