http请求

[转帖]HSTS详解

萝らか妹 提交于 2019-12-28 08:02:35
https://www.jianshu.com/p/caa80c7ad45c 1. 缘起:启用HTTPS也不够安全 有不少网站只通过HTTPS对外提供服务,但用户在访问某个网站的时候,在浏览器里却往往直接输入网站域名(例如 www.example.com ),而不是输入完整的URL(例如 https://www.example.com ),不过浏览器依然能正确的使用HTTPS发起请求。这背后多亏了服务器和浏览器的协作,如下图所示。 图1:服务器和浏览器在背后帮用户做了很多工作 简单来讲就是,浏览器向网站发起一次HTTP请求,在得到一个重定向响应后,发起一次HTTPS请求并得到最终的响应内容。所有的这一切对用户而言是完全透明的,所以在用户眼里看来,在浏览器里直接输入域名却依然可以用HTTPS协议和网站进行安全的通信,是个不错的用户体验。 一切看上去都是那么的完美,但其实不然,由于在建立起HTTPS连接之前存在一次明文的HTTP请求和重定向(上图中的第1、2步),使得攻击者可以以中间人的方式劫持这次请求,从而进行后续的攻击,例如窃听数据,篡改请求和响应,跳转到钓鱼网站等。 以劫持请求并跳转到钓鱼网站为例,其大致做法如下图所示: 图2:劫持HTTP请求,阻止HTTPS连接,并进行钓鱼攻击 第1步:浏览器发起一次明文HTTP请求,但实际上会被攻击者拦截下来 第2步:攻击者作为代理

nginx正则配置解释和fastadmin

你。 提交于 2019-12-28 07:24:02
参考: http://www.cnblogs.com/netsa/p/6383094.html 1 2 3 4 5 6 7 8 9 10 11 1、^: 匹配字符串的开始位置; 2、 $:匹配字符串的结束位置; 3、.*: .匹配任意字符,*匹配数量0到正无穷; 4、\. 斜杠用来转义,\.匹配 . 特殊使用方法,记住记性了; 5、(值1|值2|值3|值4):或匹配模式,例:(jpg|gif|png|bmp)匹配jpg或gif或png或bmp 6、i不区分大小写   一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 三.rewrite指令的最后一项参数为flag标记,flag标记有: 1.last 相当于apache里面的[L]标记,表示rewrite。 2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。 3.redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址。 4.permanent 返回301永久重定向,浏览器地址会显示跳转后的URL地址。

最新:JMeter性能测试Http Request附加参数全剖析

纵然是瞬间 提交于 2019-12-28 07:19:48
当使用JMeter来测试HTTP Request时,在配置请求参数时初学者往往不得要领,加之JMeter提供了灵活多变的参数附加形式,若不注意其中的诀窍与细节,迷惑不解也在所难免.针对此种情况,本文逐一为大家解惑. 首先我们还是先要了解下HTTP协议的基础知识. 1、HTTP报文格式 HTTP协议是Web客户端与Web服务器之间通信规则的集合.协议有语法,语义与时序三个要素.在通信过程中通信双方需要遵循基本的语法要素,而HTTP报文的格式体现的语法层次的基本要求. 一般来说HTTP报文(消息)可以分为HTTP请求报文与HTTP响应报文,这里参考最新的HTTP1.1 RFC7230-7239,HTTP-message具体格式如下图所示: 2、HTTP请求方法 2.1 HTTP/1.1标准方法 HTTP/1.0定义了三个方法:GET,HEAD,POST;HTTP/1.1在其基础上扩充了PUT,DELETE,CONNECT,OPTIONS,TRACE方法;后来在RFC 5789中又新增了PATCH方法,可以看成是对PUT方法的补充. 2.2 WebDAV扩展方法 WebDAV(Web-based Distributed Authoring and Versioning)一种基于HTTP/1.1协议的通信协议。它扩展了HTTP/1.1,在GET、POST

请求库之urllib,requests及工具selenium

徘徊边缘 提交于 2019-12-28 02:39:39
urllib模块 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求。其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2。 一、使用流程: 指定url 基于urllib的request子模块发起请求 获取响应中的数据值 持久化存储 二、urlopen函数原型: urllib.request.urlopen(url, data=None, timeout=<object object at 0x10af327d0>, *, cafile=None, capath=None, cadefault=False, context=None) 在日常开发中,我们能用的只有url和data这两个参数。 url参数:指定向哪个url发起请求 url的特性:url必须为ASCII编码的数据值。所以我们在爬虫代码中编写url时,如果url中存在非ASCII编码的数据值,则必须对其进行ASCII编码后,该url方可被使用。 get: word = urllib.parse.quote("人民币") post: data = { 'kw':'西瓜'} data = urllib.parse.urlencode(data) data = data.encode()

Python入妖3-----Urllib库的基本使用

风流意气都作罢 提交于 2019-12-28 02:39:22
什么是Urllib Urllib是python内置的HTTP请求库 包括以下模块 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.robotparser robots.txt解析模块 urlopen 关于urllib.request.urlopen参数的介绍: urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) url参数的使用 先写一个简单的例子: import urllib.request ''''' Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据 urlopen 方法用来打开一个url read方法 用于读取Url上的数据 ''' response = urllib.request.urlopen('http://www.baidu.com') print(response.read().decode('utf-8')) urlopen一般常用的有三个参数,它的参数如下: urllib.requeset.urlopen(url,data,timeout)

Get和Post的区别

杀马特。学长 韩版系。学妹 提交于 2019-12-28 01:35:40
Get和Post的区别 一、原理区别 一般我们在浏览器输入一个网址访问网站都是GET请求;在FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。 根据HTTP规范,POST可能会修改服务器上的资源的请求。比如CSDN的博客,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了,或者说资源被修改了,这些便是“不安全方法”。 二、安全性区别 1、GET是通过URL方式请求,可以直接看到,明文传输 2、POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的 3、GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中 三、表现形式区别 搞清楚两者的原理区别之后,让我们来看一下在实际中的区别。 在HTTP请求中,第一行必须是一个请求行,包括请求方法,请求URL,报文所用HTTP版本信息。紧接着是一个herders小节,可以有零个或一个首部,用来说明服务器要使用的附加信息。在首部之后就是一个空行,最后就是报文实体的主体部分,包含一个由任意数据组成的数据块。但是并不是所有的报文都包含实体的主体部分。 GET请求实例: 1 GET http://weibo.com/signup/signup.php?inviteCode=2388493434 2

从输入URL到页面加载完成的过程中都发生了什么事情?

隐身守侯 提交于 2019-12-28 00:29:56
从输入URL到页面加载完成的过程中都发生了什么事情? 一、初始准备(服务器端) 1.服务器启动监听服务,准备迎接来自客户机的请求。 服务器启动操作系统—启动http服务进程(apache or nginx or ..)--服务进程开始定位到服务器上的www文件夹,一般是位于/var/www。 2.服务器启动一些附属的模块。 例如php,或者,使用fastcgi方式连接到php的fpm管理进程。 3.向操作系统申请一个tcp连接 4.绑定在80端口 5.调用了accept函数 6.开始监听。 监听着可能来自位于地球任何一个地方的请求,随时准备做出响应 补充: 典型的情况下,机房里面应该还有一个数据库服务器,或许,还有一台缓存服务器,如果对于流量巨大的网站,那么动态脚本的解释器可能还有单独的物理机器来跑,如果是中小的站点,那么,上述的各色服务,甚至都可能在一台物理机上,不管怎么说,他们做好了准备,静候差遣。 二、查找服务器IP 1.输入地址URL(Uniform Resource Identifier统一资源标识符)。 键盘上的每个按键都有不同的电频,通过按键,电脑得知输入的内容。在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得url了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的url,然后给出智能提示。 2.把URL分割成几个部分:协议、网络地址、资源路径

Servlet 3.0 实战:异步 Servlet 与 Comet 风格应用程序

女生的网名这么多〃 提交于 2019-12-27 20:23:20
概述 作为 Java EE 6 体系中重要成员的 JSR 315 规范,将 Servlet API 最新的版本从 2.5 提升到了 3.0,这是近 10 年来 Servlet 版本号最大的一次升级,此次升级中引入了若干项令开发人员兴奋的特性,如: 可插拔的 Web 架构(Web framework pluggability)。 通过 Annotations 代替传统 web.xml 配置文件的 EOD 易于开发特性(ease of development)。 Serlvet 异步处理支持。 安全性提升,如 Http Only Cookies、login/logout 机制。 其它改进,如文件上传的直接支持等。 其中,在开源社区中讨论得最多的就是 Servlet 异步处理的支持,所谓 Servlet 异步处理,包括了非阻塞的输入/输出、异步事件通知、延迟 request 处理以及延迟 response 输出等几种特性。这些特性大多并非 JSR 315 规范首次提出,譬如非阻塞输入/输出,在 Tomcat 6.0 中就提供了 Advanced NIO 技术以便一个 Servlet 线程能处理多个 Http Request,Jetty、GlassFish 也曾经有过类似的支持。但是使用这些 Web 容器提供的高级特性时,因为现有的 Servlet API 没有对这类应用的支持

express 框架之session

﹥>﹥吖頭↗ 提交于 2019-12-27 19:25:07
一、什么是session?   最近在学习node.js 的express框架,接触到了关于session方面的内容。翻阅了一些的博客,学到了不少东西,发现一篇博文讲的很好,概念内容摘抄如下: Session是什么 Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间。从不同的层面看待session,它有着类似但不全然相同的含义。比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录、并完成购物直到关闭浏览器,这是一个会话。而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做session。因此在谈论session的时候要注意上下文环境。而本文谈论的是一种基于HTTP协议的用以增强web应用能力的机制或者说一种方案,它不是单指某种特定的动态页面技术,而这种能力就是保持状态,也可以称作保持会话。 为什么需要session 谈及session一般是在web应用的背景之下,我们知道web应用是基于HTTP协议的,而HTTP协议恰恰是一种无状态协议。也就是说,用户从A页面跳转到B页面会重新发送一次HTTP请求,而服务端在返回响应的时候是无法获知该用户在请求B页面之前做了什么的。 对于HTTP的无状态性的原因,相关RFC里并没有解释,但联系到HTTP的历史以及应用场景,我们可以推测出一些理由: 1.

nc模拟浏览器请求http

邮差的信 提交于 2019-12-27 19:21:42
《渗 透测试完全初学者指南》的“6.5.1检测非标准端口”使用了nc手动发送http命令获取web的内容。依照这个例子是可以执行成功的,但按此例子的方法去apache发起请求则不能成功。如下: nc 172.28.128.35 80 GET / HTTP/1.1 HTTP/1.1 400 Bad Request Date: Fri, 27 Dec 2019 03:08:49 GMT Server: Apache/2.4.6 (CentOS) Content-Length: 226 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> </body></html> 根据参考链接,需要使用下面的命令才能请求成功 printf "GET / HTTP/1.1\r\nHOST:z\r\n\r\n" | nc