python 创建Web Server

1. Web 服务应用工作机制

  • 监听80或者是443端口

    • 80为普通的http协议,443为https。
  • 等待客户端请求
    • GET、POST、HEAD… …
  • 处理请求
    • 保存文件
    • 执行CGI脚本

2. 创建一个简单的Web服务

  • 使用SimpleHTTPServer类
  • 实现do_GET()方法
  • 可以当做刺透客户端的服务端渗透代码
  • 可以做渗透测试的客户端代码

从终端进入python编辑模式,输入以下代码:

>>>
>>> import SocketServer
>>> import SimpleHTTPServer
>>>
>>>
>>> httpServer = SocketServer.TCPServer(("",8888),SimpleHTTPServer.SimpleHTTPRequestHandler)
>>>
>>>
>>> httpServer.serve_forever()

  需要导入SocketServer和SimpleHTTPServer模块,创建TCPServer的一个实例,("",8888)表示绑定本机IP和8888端口。server_forever()表示持续监听。

  打开浏览器,输入本机IP地址和端口号,查看结果:

  

  

  浏览器列出了当前目录下的文件,再来空一下服务端的处理情况。

  

  

  左侧的ip和我浏览器IP不一致是因为我是用了代理,这里不多做解释。至于出现了404代码,我们来看一下浏览器地址左侧的小标志,点击查看,原因是身份未验证。

  

  

  如果只是利用web服务列出文件列表,这就可以了。如果你想更进一步,提供不同的输出服务,例如你想不同的用户访问输出不同的结果。作为一个安全测试人员,你想查看由服务器发送的不同的参数,那么请看一下代码:

  

#!/usr/bin/env python
# _*_ coding=utf-8 _*_

import SocketServer
import SimpleHTTPServer

#创建HTTPserver处理类,继承SimpleHTTPServer
class HttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):

    def do_GET(self):
        if self.path == ‘/root‘:
            self.wfile.write(‘This page is only for root‘)
            self.wfile.write(self.headers)

        else:
            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

httpServer = SocketServer.TCPServer(("",8888),HttpRequestHandler)

httpServer.serve_forever()

  自己写一个HTTP的处理类,并继承SimpleHTTPServer,重写do_GET()方法。运行此脚本,用浏览器访问。

  如果只输入和上面一样的地址(10.128.175.36:8888)进行访问,得到的结果依然和之前一样,但是我们10.128.175.36:8888/root访问root目录,再来看一下结果:

  

  从结果上看,已经无法访问,而且后面已经dump出了http头部的详细信息。包括主机的IP和端口,user-agent,Accept等信息。

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36

  这个user-agent描述的是本机google浏览器的相关信息。对做网页爬虫,伪造http头是很有用的。

  

时间: 2024-10-15 21:11:14

python 创建Web Server的相关文章

python搭建web server

如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python 可能帮助你.使用Python可以完成一个简单的内建 HTTP 服务器.于是,你可以把你的目录和文件都以HTTP的方式展示出来.佻只需要干一件事情,那就是安装一个Python. 实际上来说,这是一个可以用来共享文件的非常有用的方式.实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行.下面是这个命令行:(假设我们需要共享我们

使用Python创建一个简易的Web Server

Python 2.x中自带了SimpleHTTPServer模块,到Python3.x中,该模块被合并到了http.server模块中.使用该模块,可以快速创建一个简易的Web服务器. 我们在C:\Users\%USERNAME%\用户目录下,创建一个html目录,将html/jpg等网页文件拷贝到该目录下,启动一个cmd命令行窗口,进入html目录,执行如下命令即可创建一个简易的Web Server: python -m http.server 8888 图01-使用python创建一个简单的

python web server gateway interface (wsgi ) notes

前言: 注:如果需要得到支持批Python3.x以及包含了勘误表,附录,和说明的更新版规范,请查看PEP 3333 摘要: 这篇文档详细说明了一套在web服务器与Python web应用程序(web框架)之间的已提出的标准接口,从而方便web应用在各种web服务器之间的移植. 理论和目标 Python世界目前拥有各种各样的web应用框架,仅举几例比如 Zope, Quixote, Webware, SkunkWeb, PSO, and Twisted Web 等[1],对于新手来说面对如此多的选

python搭建简易Web Server

如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python可能帮助你,使用Python可以完成一个简单的内建 HTTP 服务器,于是,你可以把你的目录和文件都以HTTP的方式展示出来,只需要干一件事情,那就是安装一个Python. 实际上来说,这是一个可以用来共享文件的非常有用的方式.实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行.下面是这个命令行:(假设我们需要共享我们的目

asyncio创建协程解析——分析廖雪峰的Python教程之创建WEB服务(转)

第一步,搭建开发环境 所需第三方库: aiohttp,异步 Web 开发框架:jinja2,前端模板引擎:aiomysql,异步 mysql 数据库驱动 所需内置库: logging,系统日志:asyncio,异步IO:os,系统接口:json,json 编码解码模块:time,系统时间模块:datetime,日期模块 接下来仅对用到的功能进行讲解 第二步,构建 Web 框架 主要思路: 理解 asyncio.aiohttp 基本应用 使用 asyncio 异步 IO 模块创建服务协程,监听相应

小测几种python web server的性能

http://blog.csdn.net/raptor/article/details/8038476 因为换了nginx就不再使用mod_wsgi来跑web.py应用了,现在用的是gevent-wsgi,效果还不错.但还是想试试别的,比如传说中超级猛的meinheld什么的. 软硬件环境 硬件: 一台04年初购置的IBM X235服务器,CPU为Xeon 2.4G两颗,内存1G,100M网卡. 软件: Ubuntu Server 10.04 LTSApache 2.2.14Nginx 0.7.

Notes on PEP333 (Python Web Server Gateway Interface)

This note is about PEP3333- Python Web Server Gateway Interface. Refer to (Source: http://legacy.python.org/dev/peps/pep-3333/) for the complete description.  1. From the Application/Framwork side The application object is simply a callable object th

自己动手创建一个Web Server(非Socket实现)

目录 介绍 Web Server在Web架构系统中的作用 Web Server与Web网站程序的交互 HTTPListener与Socket两种方式的差异 附带Demo源码概述 Demo效果截图 总结 介绍 本篇文章主要介绍使用HTTPListener类型自己动手创建一个Web Server,创建的Web Server能够接收来自浏览器端的HTTP请求,并且能够传递给对应的Web站点进行处理,最后将处理结果(Html或者其他格式)返回给浏览器. 博主前面曾经介绍过使用Socket模拟Web Se

python -m http.server 搭建一个简易web下载服务器

在打vulnhub靶场的时候遇到的一个问题 目录 一.进到需要发送的安装包目录 二.开启http服务 三.访问服务器 一.进到需要发送的安装包目录 比如设置一个专门发送,传输的文件的文件夹,cmd命令打开即可以 二.开启http服务 python2 python -m SimpleHTTPServer 9000 python3 python -m http.server 9000 (这里要注意了,python2跟python3的命令是不一样的,我之前就是上网搜搭建方法,大都是搜到了python3