pythonを使用して126メールボックスにログイン

8969 ワード

import sys, urllib2, urllib, cookielib

import urlparse

import re, os, string

from stat import *



cookie = cookielib.LWPCookieJar()

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

#opener = urllib2.build_opener(urllib2.HTTPHandler())

opener.add_handler(urllib2.HTTPHandler())

urllib2.install_opener(opener)
def login126(username, password):

	url1 = '''

	https://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1

	'''

	values = {

		'domain' : '126.com',

		'language' : '0',

		'bCookie' : '',

		'username' : '%[email protected]' % username,

		'savelogin' : '',

		'url2' : 'http%3A%2F%2Fmail.126.com%2Ferrorpage%2Ferr_126.htm',

		'user' : '%s' % username,

		'password' : '%s' % password,

		'style' : '-1',

		'secure' : '',

		'enter.x' : '%B5%C7%A1%A1%C2%BC'

	}



	data = urllib.urlencode(values)

	req = urllib2.Request(url1, data)

	response = opener.open(req)

	data2 =response.read()



	url2 = re.search(r'(?<=(replace\(")).*?(?=")', data2).group()

	response = opener.open(url2)

	data3 = response.read()



	url3 = re.search(r'(?<=(replace\(")).*?(?=")', data3).group()

	response = opener.open(url3)

	data4 = response.read()



	url4 = re.sub(r'main', 'index', response.url )

	response = opener.open(url4)

	data5 = response.read()



	url5 = re.sub(r'/index.jsp', '', url4)

	part1 = re.search(r'(http://).*?(?=/)', url4).group()

	part2 = re.search(r'sid.+', url4).group()

	url5 = '%s/a/s?%s&func=mbox:listMessages' % (part1, part2)



	received_xml = '''

	<?xml version="1.0"?>

	<object>

		<int name="fid">1</int>

		<string name="order">date</string>

		<boolean name="desc">true</boolean>

		<boolean name="topFirst">false</boolean>

		<int name="start">0</int>

		<int name="limit">20</int>

	</object>

	'''



	draft_xml = '''

	<?xml version="1.0"?>

	<object>

		<int name="fid">2</int>

		<string name="order">date</string>

		<boolean name="desc">true</boolean>

		<boolean name="topFirst">false</boolean>

		<int name="start">0</int>

		<int name="limit">20</int>

	</object>

	'''

	sent_xml = '''

	<?xml version="1.0"?>

	<object>

		<int name="fid">3</int>

		<string name="order">date</string>

		<boolean name="desc">true</boolean>

		<boolean name="topFirst">false</boolean>

		<int name="start">0</int>

		<int name="limit">20</int>

	</object>

	''' 

	delete_xml = '''

	<?xml version="1.0"?>

	<object>

		<int name="fid">4</int>

		<string name="order">date</string>

		<boolean name="desc">true</boolean>

		<boolean name="topFirst">false</boolean>

		<int name="start">0</int>

		<int name="limit">20</int>

	</object>

	'''

	data = draft_xml



	req = urllib2.Request(url5, data)

	response = opener.open(req)

	data6 = response.read()



	index = 0

	for match in re.finditer(r'(?<="subject"\>).*?(?=\<)',data6):

		index += 1

		print (" %d      %s" % ( index, match.group().decode('utf8').encode('gbk')))