【第22期】观点:IT 行业加班,到底有没有价值?

python 3.x 163邮箱登陆,邮件读取

原创 2015年11月20日 10:52:08
import  urllib.request
import  urllib.parse
import  http.cookiejar,re

opener = None

# 带Cookie访问
def openurl(parms):
  global opener
  if opener == None:
      #cookie设置
      cj =  http.cookiejar.CookieJar()
      opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
  ret = opener.open(parms)
  return ret


def login_163(**parms):
  #初始化
  parms_key = ['domain','password','username']
  arg = {}
  for key in parms_key:
    if key in parms:
      arg[key] = parms[key]
    else:
      arg[key] = ''
  #获取syscheckcode
  pre_login = arg['domain']
  html = openurl(pre_login).read().decode('utf-8')

  patt = re.compile(r'.*?name=syscheckcode.*?value="(.*?)".*?')
  syscheckcode = patt.search(html)
  if not syscheckcode:
    raise Exception('GET syscheckcode Fail!')
  syscheckcode = syscheckcode.group(1)

  #登陆
  postdata = {
   'syscheckcode':syscheckcode,
   'password':arg['password'],
   'username':arg['username'],
    }
  postdata = urllib.parse.urlencode(postdata)
  postdata = postdata.encode('utf-8')
  req = urllib.request.Request(
    url= arg['domain'],
    data=postdata
    )
  html = openurl(req).read().decode('utf-8')

  thisurl  = 'http://reg.163.com/Main.jsp?username=' + arg['username']
  html = openurl(thisurl).read().decode('utf-8')
  # 获取随机key
  thisurl = 'http://entry.mail.163.com/coremail/fcg/ntesdoor2?verifycookie=1&lightweight=1&from=urs'

  html = openurl(thisurl).read().decode('utf-8')

  patt = re.compile(r'.*?@163.com&sid=(.*?)&from.*?')
  sid = patt.search(html);
  sid = sid.group(1)

  # 获取sid
  thisurl = 'http://mail.163.com/js6/main.jsp?sid=' + sid
  html = openurl(thisurl).read().decode('utf-8')
  thisurl = 'http://mail.163.com/js6/s?sid=' + sid + '&func=mbox:listMessages&topNav_mobileIcon_show=1&TopTabReaderShow=1&TopTabLofterShow=1'


  # 获取邮件key --- 可以读取看看,实际上是一个类似xml的表,所有的邮件都在这里,我们需要的是key,这里是抽取的第一封邮件的key
  html = openurl(thisurl).read().decode('utf-8')

  patt = re.compile(r'.*?name="id">(.*?)</string>.*?')
  key =  patt.search(html);
  key = key.group(1)

  # 获取邮件内容
  thisurl = 'http://mail.163.com/js6/read/readhtml.jsp?mid=' + key
  html = openurl(thisurl).read().decode('utf-8')

  # 测试输出
  print(html)
  # 假设返回假,,这个验证可以最后加上
  flag = True
  #if 'succeedhandle_login' in html:
    #flag = True
  return flag


# 这里是开始,我懒得缩进了 if __name__ == '__main__':
# 用户名 及 密码
while True:
  user = input('input your username:')
  pwd = input('input your password:')
  if len(user) != 0 and len(pwd) != 0:
    break
  print('输入错误')



# 测试网站
dom='https://reg.163.com/logins.jsp'
try:
  flag = login_163(username=user,password=pwd,domain=dom)
  if not flag:
    print('读取失败!')
    exit(0)
  else:
    print('读取成功')

except Exception as e:
   print('Error:',e)

反正大致过程就是上面那样,,,很标准的 post登陆,之后 163 的页面比较特殊,具体可以自己去试试。

那个key页面是抓包之后找到的,通过那个key就能获得每一封邮件了。

整个代码是从一份功能代码中抽出来,因为剩下的内容涉及xxx,所以不发了。

本代码为自己所写,自己抓包测的,没有任何参考, 如有雷同,绝逼是被抄袭。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

python模拟登录网易邮箱

python模拟登录网易邮箱 {CSDN:CODE:1146470} 推荐一篇不错的文章:http://www.pythonclub.org/python-network-applicatio...

python爬虫-获取个人网易邮箱所有邮件列表信息

最近开始了python爬虫的学习,这里带来利用python实现网易163邮箱个人收件箱邮件列表信息的爬取的小项目,刚开始学习,写的不好的地方,望大神指正,诚恳学习。 主要内容 模拟163邮箱登录 获取...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Python3简单爬虫学习

首先明确学习的目标,实现诸如“模拟登陆知乎抓取美图和评论”的功能。 这里是用python3来爬虫,相比于python2,python3有了不少改动。 说明(python3相比python2的改动点)...

javamail 通过163邮箱发送邮件

1.使用javamail的jar包 2.在163邮箱的设置中开启POP3/SMTP/IMAPpublic static boolean sendMail(String to, String code...

Jmeter登录163邮箱

闲来无事,尝试用jmeter登录了一下163的邮箱。具体步骤如下: 1.首先注册一个163邮箱的账号  (废话) 2.使用badboy录制163登录的请求(其实该地方可以用httpwatc...

python 3.x 163邮箱登陆,邮件读取

import urllib.request import urllib.parse import http.cookiejar,reopener = None# 带Cookie访问 def op...

廖雪峰Python 2.X 教程

Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 现在,全世界差不多有600多种编程语言,但流行的编程语...

文章收录1

网站地图(Build090324):(2013-8-2 15:50:47) 1. 网站地图-网站地图-网站地图-网站地图-网站地图-网站地图-网站地图-网站地图-网站地图-网站地图-@title ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)