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

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'.*[email protected]&s)    sid = patt.search(html);    sid = sid.group(1)      # 获取sid    thisurl = 'http://mail.163.com/js6/main.jsp?sutf-8')    thisurl = 'http://mail.163.com/js6/s?s&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?mutf-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,所以不发了。

原文出处:zybuluo -> https://www.zybuluo.com/FadeTrack/note/223111

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。