关闭

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

3159人阅读 评论(2) 收藏 举报
分类:
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,所以不发了。

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

3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

利用python smtplib 登录QQ邮箱发送邮件

Python 发送邮件(QQ邮箱)每当学期末考试结束后,查询成绩就成了每天和打开微信一样平常的事情,但是学校的教务系统的成绩更新有时间限制,我又不想整天去刷新成绩,所以想到用 python来爬取成绩信...
  • Hongwing
  • Hongwing
  • 2016-08-12 20:50
  • 4011

python模拟登录网易邮箱

python模拟登录网易邮箱 #coding:utf-8 import urllib2,urllib import cookielib from bs4 import BeautifulS...
  • Gamer_gyt
  • Gamer_gyt
  • 2015-09-28 21:54
  • 5288

python模拟登录qq邮箱

前两天做一个任务,要写一个收取qq邮箱邮件的脚本。开始认为挺简单,后来发现还是有一些坑在里面。     首先使用python尝试模拟登录qq邮箱,发现普通用户已经不能通过账号密码模拟登录qq邮箱了。...
  • acingdreamer
  • acingdreamer
  • 2016-07-24 11:39
  • 2592

Python模拟用户自动登陆网易126邮箱

Python模拟用户自动登陆网易126邮箱的源码详解,在这里主要来和大家讲一讲,关于利用Python程序来实现自动登录(登陆)网易的126邮箱email的源码与方法,其它邮箱可以借鉴此Python程序...
  • yzl11
  • yzl11
  • 2016-07-13 22:14
  • 1902

[Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能。而这篇文章主要简单介绍如何实现自动登录163邮箱,同时继续介绍Seleni...
  • Eastmount
  • Eastmount
  • 2015-08-21 17:57
  • 16893

Python3实现163邮箱SMTP发送邮件

SMTP协议 首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用S...
  • weixin_40475396
  • weixin_40475396
  • 2017-12-02 10:49
  • 195

selenium+python模拟登陆163邮箱

下午学习了一下selenium写自动化脚本,原本书上的教程是模拟登陆126邮箱,所以我想做一个模拟登陆163邮箱,没想到里面还有很多坑。 1、163邮箱的账号密码区域的input标签的id是自动生...
  • u013948010
  • u013948010
  • 2017-11-05 15:56
  • 90

Python模拟登陆163邮箱并获取通讯:

Python模拟登陆163邮箱并获取通讯: #-*- coding:UTF-8 -*- import urllib,urllib2,cookielib import xml.etree.Elem...
  • wangzhaopeng0316
  • wangzhaopeng0316
  • 2012-11-21 07:20
  • 937

Python使用SMTP发送邮件(163,yeah等网易邮箱已测试可以)

#! /usr/bin/env python # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText m...
  • lucahan
  • lucahan
  • 2016-07-30 09:29
  • 21620

python,java使用163邮箱发邮件

import smtplib from email.mime.text import MIMEText mail_host = "smtp.163.com"  # 设置服务器 mail_user = ...
  • u013760453
  • u013760453
  • 2017-01-18 15:46
  • 367
    个人资料
    • 访问:56148次
    • 积分:966
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:11篇
    • 译文:3篇
    • 评论:20条
    文章分类
    最新评论