自主实现POP3流量抓取

自主实现POP3流量抓取

根据测试需求,需要抓取POP3流量包,使用wireshark + Python(poplib库)实现

实现代码

不废话直接上; 注意别用SSL,这个是加密无法被抓包;port:110是公开;这里需要自行百度,官方未提供,参考一下信息

163.com:
接收邮件服务器: http://pop.163.com
接收端口: 110或995(使用ssl时)

接收邮件服务器: http://imap.163.com

接收端口: 143或993(使用ssl时)

发送邮件服务器: http://smtp.163.com

发送端口: 25或465/994(使用ssl时)

126邮箱:

接收邮件服务器: http://pop.126.com

接收端口: 110

发送邮件服务器: http://smtp.126.com

发送端口: 25

139邮箱:

POP3服务器地址:http://POP.139.com(端口:110)

SMTP服务器地址:http://SMTP.139.com(端口:25)

QQ邮箱:

接收邮件服务器: http://pop.qq.com

接收端口: 110或995(使用ssl时)

接收邮件服务器: http://imap.qq.com

接收端口: 143或993(使用ssl时)

发送邮件服务器: http://smtp.qq.com

发送端口: 25或465/587(使用ssl时)

QQ企业邮箱 :

POP3服务器地址:http://pop.exmail.qq.com (SSL启用 端口:995)

SMTP服务器地址:http://smtp.exmail.qq.com【端口:25或465/587(>使用ssl时)】

gmail(http://google.com) :

POP3服务器地址:http://pop.gmail.com(SSL启用 端口:995)

SMTP服务器地址:http://smtp.gmail.com(SSL启用 端口:587)

Foxmail:

POP3服务器地址:http://POP.foxmail.com(端口:110)

SMTP服务器地址:http://SMTP.foxmail.com(端口:25)

sina.com:

接收邮件服务器: http://pop.sina.com

接收端口: 110

发送邮件服务器: http://smtp.sina.com

发送端口: 25

sinaVIP:

POP3服务器:http://pop3.vip.sina.com (端口:110)

SMTP服务器:http://smtp.vip.sina.com (端口:25)

sohu.com:

POP3服务器地址:http://pop3.sohu.com(端口:110)

SMTP服务器地址:http://smtp.sohu.com(端口:25)

雅虎邮箱:

接收邮件服务器: http://pop.mail.yahoo.cn

接收端口: 110或995(使用ssl时)

接收邮件服务器: http://imap.mail.yahoo.cn

接收端口: 143或993(使用ssl时)

发送邮件服务器: http://smtp.mail.yahoo.cn

发送端口: 25或465(使用ssl时)>

import poplib
from email.parser import Parser
from email.header import decode_header

# 邮箱设置
email = "你的邮箱"
password = "xxx你的授权码"
pop3_server = "pop.qq.com"  # 你的POP3服务器地址,如pop.qq.com

# 连接到POP3服务器
server = poplib.POP3(pop3_server) if pop3_server.startswith("https") else poplib.POP3(pop3_server) #这里需要注意有个SSL别用否则就抓不到了哦 
server.user(email)
server.pass_(password)

# 获取邮件数量和大小
num_messages = len(server.list()[1])
print(f"邮箱中共有{num_messages}封邮件。")

# 下载最新一封邮件
if num_messages > 0:
    # 获取最新邮件的索引(POP3中邮件索引从1开始)
    latest_email_index = num_messages
    resp, lines, octets = server.retr(latest_email_index)

    # 解码邮件内容
    msg_content = b'\n'.join(lines).decode('utf-8')
    msg = Parser().parsestr(msg_content)

    # 打印邮件信息
    print("邮件主题:", decode_header(msg['Subject'])[0][0])
    print("发件人:", decode_header(msg['From'])[0][0])
    print("收件人:", decode_header(msg['To'])[0][0])
    # print("日期:", decode_header(msg['Date'])[0][0])

    # 打印邮件正文
    for part in msg.walk():
        if part.get_content_type() == "text/plain":
            print("\n邮件正文:")
            print(part.get_payload(decode=True).decode('utf-8'))
            break

    # 关闭连接
    server.quit()
else:
    print("邮箱中没有邮件。")

在这里插入图片描述
在这里插入图片描述

wireshark 进行抓包

设置抓包过滤

已知代码中 port= 110, 所以 过滤我们可以直接用tcp port == 110 实现

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值