202009-28 Python3自定义http/https请求拦截mitmproxy脚本实例 脚本内容代码如下:frommitmproxyimporthttp,ctxfrommultiprocessingimportLockclassFilter:def__init__(self,filter_info):self.log_info=""self.mutex=Lock()self.filter_info=filter_infoself.response_file=Noneself.switch_on=Falseself.log_file="log.txt"deflog(self,info)->None:self.log_info+=f"{info}\n\n"defwrite_log(self,mode="w+")->None:... 继续阅读 >
202009-27 Java http请求封装工具类代码实例 java实现http请求的方法常用有两种,一种则是通过java自带的标准类HttpURLConnection去实现,另一种是通过apache的httpclient去实现。本文用httpclient去实现,需要导入httpclient和httpcore两个jar包,测试时用的httpclient-4.5.1和httpcore-4.4.3。HttpMethod.javapackagedemo;publicenumHttpMethod{GET,POST;}HttpHeader.javapackagedemo;importjava.util.HashMap;importjava.util.Map;/***请求头*/publicclassH... 继续阅读 >
202009-25 Golang HTTP 服务平滑重启及升级的思路 GolangHTTP服务在上线时,需要重新编译可执行文件,关闭正在运行的进程,然后再启动新的运行进程。对于访问频率比较高的面向终端用户的产品,关闭、重启的过程中会出现无法访问(nginx表现为502)的情况,影响终端用户的使用体验。实现的一般思路一般情况下,要实现平滑重启或升级,需要执行以下几个步骤:发布新的bin文件覆盖老的bin文件发送一个信号量(USR2),告诉正在运行的进程,进行重启正在运行的进程接受到信号后... 继续阅读 >
201811-12 深度理解HTTPS 前言随着网络安全问题越来越被重视,HTTPS协议的使用已经逐渐主流化。目前的主流站点均已使用了HTTPS协议;比如:百度、淘宝、京东等一二线主站都已经迁移到HTTPS服务之上。而作为测试人员来讲,也要需时俱进对HTTPS协议要有一定的了解,这样就可以更好的帮助我们在工作完成任务和排查问题。HTTP与TCP首先,在理解HTTPS之前需要了解HTTP。HTTP(HyperTextTransferProtocol)是超文本传输协议,是在互联网上广泛使用的一种信息传... 继续阅读 >
201810-17 服务端I/O性能大比拼:Node、PHP、Java、Go 摘要:本文首先简单介绍了I/O相关的基础概念,然后横向比较了Node、PHP、Java、Go的I/O性能,并给出了选型建议。了解应用程序的输入/输出(I/O)模型能够更好的理解它在处理负载时理想情况与实际情况下的差异。也许你的应用程序很小,也无需支撑太高的负载,所以这方面需要考虑的东西还比较少。但是,随着应用程序流量负载的增加,使用错误的I/O模型可能会导致非常严重的后果。在本文中,我们将把Node、Java、Go和P... 继续阅读 >
201709-01 【译】Python3中进行HTTP请求的4种方式 python包索引(PyPI)提供了超过10万个代码库的包,它能够帮助python程序员完成许多工作,无论是构建web应用程序还是分析数据。另外PyPI还提供了很多诸如twilio之类的API的辅助库。下面让我们通过使用4个不同的PythonHTTP库来学习如何从RESTfulAPI检索和解析JSON数据,以此来演示PyPI包的强大功能。文中的每个示例都包含以下内容:定义要解析的URL,我们将使用SpotifyAPI,因为它不需要在请... 继续阅读 >
201703-29 你真的了解HTTP缓存吗 有时,HTTP中的缓存可能会非常让人头疼。按照文档正确地使用HTTP并不是那么困难,但事实上,不同的浏览器和HTTP版本常常困扰着我们。而我们自己或是不必或是没有时间去钻研所有的边缘的情况。这里总结的实用并速记的规则,希望对大家有所帮助静态资源永远不会修改的内容:JS和CSS文件,图片,和任何类型的二进制文件都属于这个类目。永远,我确实说的是永远。为静态资源指定版本号是很通用的做法。它们无... 继续阅读 >
201610-22 一次完整的HTTP请求过程 一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端,HTTP的响应内容同样有标准的格式。无论是什么客户端或者是什么服务端,大家只要按照HTTP的协议标准来实现的话,那么它一定是通用的。HTTP请求格式HTTP请求格式主要有四部分组成,分别是:请求行、请求头、空行、消息体,每部分内容占... 继续阅读 >
201609-29 HTTP如何像TCP一样实时的收消息? 一、网站即时消息(WebIM)如何实现消息推送网站即时消息(WebIM)通常有三种方式实现推送通道:1)WebSocket2)FlashSocket3)http轮询其中1)和2)是用Tcp长连接实现的,其消息的实时性可以通过tcp保证。方案3)才算是webim实现消息推送的“正统”方案,用http短连接轮询的方式实现“伪长连接”,既然是轮询,有朋友就对消息的实时性产生了质疑。本文要解答,webim使用http长轮询如何保证消息的绝对实时性。二、人们为什么会... 继续阅读 >
201604-05 写给后端程序员的HTTP缓存原理介绍 通过Internet获取资源既缓慢,成本又高。为此,Http协议里包含了控制缓存的部分,以使Http客户端可以缓存和重用以前获取的资源,从而优化性能,提升体验。虽然Http中关于缓存控制的部分,随着协议演进,有一些变化。但我觉着,作为后端程序员,在开发Web服务时,只需要关注请求头If-None-Match、响应头ETag、响应头Cache-Control就足够了。因为这三个Http头就可以满足你的需求,并且,当今绝大多数的浏览器,都支持这三个Http... 继续阅读 >
201512-15 HTTP状态码作用 HTTP状态码的作用是:web服务器用来告诉客户端,发生了什么事。状态码位于HTTPResponse的第一行中,会返回一个”三位数字的状态码“和一个“状态消息”。”三位数字的状态码“便于程序进行处理,“状态消息”更便于人理解。状态码分类HTTP状态码被分为五大类,目前我们使用的HTTP协议版本是1.1,支持以下的状态码。随着协议的发展,HTTP规范中会定义更多的状态码。小技巧:假如你看到一个状态码518,你并不知道具体5... 继续阅读 >
201512-07 浏览器 HTTP 缓存原理分析 以前项目中遇到了很多浏览器缓存相关的问题,也在网上查过资料,搞过服务器的配置,来确保客户端加载服务器资源的速度和资源有效性。最近仔细看了下http协议中和缓存相关的一些属性,总结一下。浏览器缓存原理文字版描述①浏览器第一次访问服务器资源/index.html在浏览器中没有缓存文件,直接向服务器发送请求。服务器返回 200OK,实体中返回index.html文件内容,并设置一个缓存过期时间,一个文件修改时间,一个根... 继续阅读 >
201511-11 使用HTTP/2提升性能的7个建议 历史悠久的超文本传输协议,即HTTP标准,最近版本升级了。HTTP/2在2015年5月被批准,目前已经在很多Web浏览器和服务器中得到实现(包括NGINXPlus和开源NGINX)。大约有三分之二的浏览器已经支持HTTP/2,而且这个比例每月都在增加。HTTP/2构建在GoogleSPDY协议基础之上,Chrome将在2016年年初停止对后者的支持。NGINX是最早支持SPDY的,如今同样率先支持了HTTP/2。为此,我们还发布了详尽的白皮书(PDF),介绍了HTTP/2... 继续阅读 >
201508-04 HTTP长连接和短连接原理浅析 1.HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。2.如何理解HTTP协议是无状态的HTTP协议是无状态的,指的是协议对于事务处理... 继续阅读 >
201502-13 PHP开发者应了解的24个超酷的PHP库(微框架) 作为一个PHP开发者,现在是一个令人激动的时刻。每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库。下面是我曾经遇到过最酷的24个库。你最喜欢的库没有在这个列表里面?那就在评论中分享吧!1.Dispatch–微框架Dispatch是一个PHP小框架。它并没有给你完整的MVC设置,但你可以定义URL规则和方法,以便更好组织应用程序。这对API、简单的站点或原型来说是完美的。//包含库include'dispatch.php';//定义你... 继续阅读 >
201502-04 Http 工具类方法大全 <?php/** *Http工具类 *提供一系列的Http方法 */classHttp{ /** *采集远程文件 *@accesspublic *@paramstring$remote远程文件名 *@paramstring$local本地保存文件名 *@returnmixed */ staticpublicfunctioncurlDownload($remote,$local){&nb... 继续阅读 >