用 telnet 访问网站发送 HTTP 请求

我们平时对 telnet 用的最多的应该是 telnet 来快速测试服务端口是否可用,其实 telnet 还可以被用来发送 HTTP 请求,是的,没听错,发送 HTTP 请求!

1.首先启动一个 web server:

root@robert-Ubuntu:/media/sf_WorkSpace/HelloNG/src/testcode/djangoTest/robappdj# python manage.py runserver 0.0.0.0:8082
------In the manage.py, To test: this sentence will be output how many times------
---robert--BASE_DIR = /media/sf_WorkSpace/HelloNG/src/testcode/djangoTest/robappdj---
------In the manage.py, To test: this sentence will be output how many times------
---robert--BASE_DIR = /media/sf_WorkSpace/HelloNG/src/testcode/djangoTest/robappdj---
Performing system checks...

DEBUG 2020-08-13 18:56:25,274 utils 18546 140029887874816 (0.001) SET SQL_AUTO_IS_NULL = 0; args=None
System check identified no issues (0 silenced).
DEBUG 2020-08-13 18:56:25,842 utils 18546 140029887874816 (0.000) SET SQL_AUTO_IS_NULL = 0; args=None
DEBUG 2020-08-13 18:56:25,849 utils 18546 140029887874816 (0.006) SHOW FULL TABLES; args=None
DEBUG 2020-08-13 18:56:25,855 utils 18546 140029887874816 (0.002) SELECT `django_migrations`.`app`, `django_migrations`.`name` FROM `django_migrations`; args=()
August 13, 2020 - 18:56:25
Django version 1.8.7, using settings 'robappdj.settings'
Starting development server at http://0.0.0.0:8082/
Quit the server with CONTROL-C.


In the hellooooooo
---To get what the request has---------
type(request) = <class 'django.core.handlers.wsgi.WSGIRequest'>
{'LC_NUMERIC': 'zh_CN.UTF-8', 'RUN_MAIN': 'true', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.12', 'SCRIPT_NAME': u'', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'QUERY_STRING': '', 'SSH_CLIENT': '192.168.56.1 62540 22', 'REQUEST_METHOD': 'GET', 'LOGNAME': 'root', 'USER': 'root', 'HOME': '/root', 'LC_PAPER': 'zh_CN.UTF-8', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', 'wsgi.multithread': True, 'LANG': 'en_US.UTF-8', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'TZ': 'Asia/Shanghai', 'SERVER_NAME': 'robert-Ubuntu', 'REMOTE_ADDR': '192.168.56.101', 'LC_MEASUREMENT': 'zh_CN.UTF-8', 'QT_QPA_PLATFORMTHEME': 'appmenu-qt5', 'wsgi.url_scheme': 'http', 'SERVER_PORT': '8082', 'CONTENT_LENGTH': '', 'XDG_RUNTIME_DIR': '/run/user/0', 'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x7f5b40fa8598>, 'LC_ADDRESS': 'zh_CN.UTF-8', 'SHLVL': '1', 'wsgi.input': <socket._fileobject object at 0x7f5b3f152750>, 'HTTP_HOST': '192.168.56.101:8082', 'XDG_DATA_DIRS': '/usr/local/share:/usr/share:/var/lib/snapd/desktop', 'wsgi.version': (1, 0), 'XDG_SESSION_ID': '3', '_': '/usr/bin/python', 'LC_IDENTIFICATION': 'zh_CN.UTF-8', 'SSH_CONNECTION': '192.168.56.1 62540 192.168.56.101 22', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GATEWAY_INTERFACE': 'CGI/1.1', 'wsgi.run_once': False, 'SSH_TTY': '/dev/pts/8', 'OLDPWD': '/root', 'wsgi.multiprocess': False, 'LC_TELEPHONE': 'zh_CN.UTF-8', 'LC_MONETARY': 'zh_CN.UTF-8', 'PWD': '/media/sf_WorkSpace/HelloNG/src/testcode/djangoTest/robappdj', 'DJANGO_SETTINGS_MODULE': 'robappdj.settings', 'CONTENT_TYPE': 'text/plain', 'LC_NAME': 'zh_CN.UTF-8', 'MAIL': '/var/mail/root', 'LC_TIME': 'zh_CN.UTF-8', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'REMOTE_HOST': '', 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f5b443881e0>, 'PATH_INFO': u'/hello/'}
-------------------------------------
request = <WSGIRequest: GET '/hello/'>
In hello,request.META['CONTENT_TYPE'] = text/plain
In hello,request.META['REMOTE_ADDR'] = 192.168.56.101
request.path = /hello/
request.path_info = /hello/
request.get_full_path() = /hello/
request.build_absolute_uri() = http://192.168.56.101:8082/hello/
-------In hello--------------
request.user = AnonymousUser
type(request.user) = <class 'django.utils.functional.SimpleLazyObject'>
request.session = <django.contrib.sessions.backends.db.SessionStore object at 0x7f5b3e90c210>
type(request.session) = <class 'django.contrib.sessions.backends.db.SessionStore'>
request.COOKIES = {}
---------misc--------------
DEBUG 2020-08-13 18:56:46,916 utils 18546 140029877049088 (0.001) SET SQL_AUTO_IS_NULL = 0; args=None
DEBUG 2020-08-13 18:56:46,955 utils 18546 140029877049088 (0.036) INSERT INTO `TestModel_test` (`name`) VALUES (''); args=[u'']
In the post_save callback111: sender = <class 'TestModel.models.Test'>, kwargs = {'update_fields': None, 'instance': <Test: Test object>, 'signal': <django.db.models.signals.ModelSignal object at 0x7f5b414fd590>, 'created': True, 'raw': False, 'using': 'default'}
In the POST tmp = None
[13/Aug/2020 18:56:47] "GET /hello/ HTTP/1.0" 200 199


^Croot@robert-Ubuntu:/media/sf_WorkSpace/HelloNG/src/testcode/djangoTest/robappdj# 
  1. telnet 登录 上述服务端口,我只需输入:
    GET /hello/ HTTP/1.0
    Host: 192.168.56.101:8082
    然后加回车即可, 当然后端处理 /hello 请求的视图函数,是不能加 login_required 装饰器和认证鉴权的

    root@robert-Ubuntu:/tmp# telnet 192.168.56.101 8082
     Trying 192.168.56.101...
     Connected to 192.168.56.101.
     Escape character is '^]'.
     GET /hello/ HTTP/1.0
     Host: 192.168.56.101:8082
     
     HTTP/1.0 200 OK
     Date: Thu, 13 Aug 2020 10:56:47 GMT
     Server: WSGIServer/0.1 Python/2.7.12
     Vary: Cookie
     X-Frame-Options: SAMEORIGIN
     Content-Type: text/html; charset=utf-8
     
     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>Title</title>
     </head>
     <body>
     Hello ===AnonymousUser === !
     <p>The path info of http request is /hello/</p>
     </body>
     </html>Connection closed by foreign host.
     root@robert-Ubuntu:/tmp# 
     root@robert-Ubuntu:/tmp# 
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用telnet命令来分析HTTP协议可以通过telnet命令连接到指定的主机和端口,然后手动发送HTTP请求和接收服务器响应的内容。首先,你需要打开终端或命令提示符窗口,然后输入telnet命令,后面紧跟着要连接的主机地址和端口号。例如,如果你想要连接到百度的80端口,你可以输入telnet www.baidu.com 80。 在成功建立连接后,你可以使用以下命令来模拟HTTP请求: 1. GET / HTTP/1.1:发送一个GET请求请求服务器返回主页的内容。 2. Host: www.baidu.com:指定请求的主机名。 3. Connection: close:指定在服务器响应后关闭连接。 然后按下回车键发送请求。服务器将会返回响应的内容,包括状态行、响应头和实体主体。你可以根据HTTP协议的规范来解析和分析服务器返回的内容。 通过telnet命令分析HTTP协议可以了解HTTP请求和响应的详细过程,对于网络调试和故障排除非常有用。同时,这也可以帮助你更好地理解HTTP协议的工作原理和消息交换过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [用C语言编写的telnet源码(用来测试某端口是否开着)](https://download.csdn.net/download/lj_70596/13696930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [利用Telnet进行HTTP访问过程的协议分析](https://blog.csdn.net/weixin_42317232/article/details/103081047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值