使用控制台访问网页及发送电子邮件

计算机网络复习笔记(一)

应用层传递的信息是报文(message),这些报文基本上都是人可读的,也正因为如此,当我们了解了报文的格式之后,就可以使用控制台来模拟浏览器浏览网页或者电子邮箱发送邮件的操作。Windows自带的控制台同样也可以完成下列操作,不过使用起来会有各种各样的问题,推荐使用Xshell软件完成以下操作,Xshell对于家庭和学校用户是免费的。

首先我们来亲手尝试一下怎么实现一个“手动浏览器”。HTTP请求报文格式如下:

请求方法主要有两种,GET和POST。GET方法占了我们平时浏览网页的绝大多数,POST方法在需要输入密码时用到。我们这里以GET为例。头端字符名包含了很多浏览网页的相关信息,比如语言、浏览器类型等等,不过我们这里为了简单起见,不加入相关属性信息,全部由服务器发送默认的网页。Firefox浏览器访问百度首页的HTTP请求报文如下:

GET https://www.baidu.com HTTP/1.1

Host: www.baidu.com

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate, br

Cookie: BAIDUID=F2FCC9E99681B14A657F5889F324FAE7:FG=1; BIDUPSID=F2FCC9E99681B14A657F5889F324FAE7; PSTM=1529412704

Connection: keep-alive

Upgrade-Insecure-Requests: 1

这是专业浏览器的请求报文,比较复杂,因为其中定义了各项属性,我们人工只需要最简陋的命令,也就是第一句GET https://www.baidu.com HTTP/1.1同样也可以得到百度的HTTP相应报文。在Xshell中首先输入telnet www.baidu.com 80并回车。这之后你就已经和百度的服务器建立了连接,百度的服务器已经把你当作一个浏览器看待了。你现在就要按照浏览器的方式和它对话,继续输入GET https://www.baidu.com HTTP/1.1,并按两次回车,不出意外的话你就会收到百度发来的HTTP响应报文

之前的内容是报文头,定义了一系列相关的属性,之后就是HTML格式的网页内容。浏览器主要看重的就是后面的HTML内容,它能够把这些字符串变成我们看到的百度首页,这个过程称为渲染。这是一个技术难度非常大的过程,也是我国目前还没有真正的国产浏览器的原因。

502 Error: command not implemented

这时候你再重新输入第二遍,基本上就可以解决这个问题。auth login如果成功的话会返回

334 dXNlcm5hbWU6

这是提示你输入BASE64加密形式的用户名,我们将自己的邮箱账户名进行BASE64格式的加密(有很多提供这项功能的网站),再输入到控制台即可。然后会返回

334 UGFzc3dvcmQ6

提示输入密码,和上面用户名一样的操作,将密码进行加密后输入。如果用户名和密码正确,会返回

235 Authentication successful

代表验证成功。之后就是正式发送邮件的过程了。输入

MAIL FROM:

再次提醒,有可能出现明明输入正确却返回502 error的问题,重新输入一遍即可。接着输入

RCPT TO:

如果这两个步骤都成功,恭喜你,最困难的坎已经过去了。接着输入DATA。系统就提示你输入邮件内容。标准的邮件格式如下

From: 发件地址

To: 收件地址

Subject: 邮件标题

信件内容

.

最后有一行只有一个句号,代表信件结束。再回车,就发送了。之后输入quit断开和邮件服务器的连接。

不过根据我的尝试,发现如果收件地址写成我qq邮箱的地址,都会被系统识别为垃圾邮件而发不出去,具体的提示内容是

554 DT:SPM 126 smtp7,DsmowAAHV5_f0qVbQmwILA--.41632S3 1537594577,please see http://mail.163.com/help/help_spam_16.htm?ip=210.30.193.219&hostid=smtp7&time=1537594577

我成功实现发送的只有收件人和发件人都是同一个126邮箱的邮件。如果哪个同学成功发送到了126以外的邮箱,请务必告诉我怎么做。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180922G0ZCWL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券