http请求

性能测试入门(二)转:JMeter基础之一 一个简单的性能测试

人走茶凉 提交于 2020-01-19 19:56:16
转自:虫师博客 https://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html 个人总结: 关键词:固定QPS限制,线程组设置 测试需求。 1)测试目标网站是fnng.cnblogs.com 和 tt-topia.rhcloud.com 2)测试目的是该网站在负载达到20 QPS 时的响应时间。 QPS 解释   QPS : Query Per Second 每秒查询率。是一台查询服务器每秒能够处理的查询次数。在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。   为了达成预期的测目的,需要需要在jmeter中建立一个测试计划。因为本次测试仅要求完成对fnng.cnblogs.com 和 tt-topia.rhcloud.com 两个博客首页请求,因此只需要使用HTTP Request Sampler 即可。 建立测试计划   启动jmeter后,jmeter会自动生成一个空的测试计划,用户可以基于该测试计划建立自己的测试计划。 添加线程组   一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。   jmeter中 每个测试计划至少需要包含一个线程组

Nginx Windows详细安装部署教程

一个人想着一个人 提交于 2020-01-19 18:55:44
一、Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru 站点(俄文:Рамблер)开发的. 它也是一种轻量级的Web服务器,可以作为独立的服务器部署网站(类似Tomcat)。它高性能和低消耗内存的结构受到很多大公司青睐,如淘宝网站架设。 先下载直接去官网 http://nginx.org/en/download.html 1、下载 2、解压 下载后解压,解压后如下 二、启动、关闭服务   有很多种方法启动nginx。    1、直接双击nginx.exe ,双击后一个黑色的弹窗一闪而过就表示启动成功。 缺点:    这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程,再启动才可以。   2、命令启动     打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 nginx.exe ,回车即可。 1 start nginx 1 nginx.exe     3、检查nginx是否启动成功   ① 直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功    ② 在cmd命令窗口输入命令 tasklist /fi

PHP请求微信域名检测接口官方API的详解与示例

自闭症网瘾萝莉.ら 提交于 2020-01-19 15:30:02
微信域名检测接口API是腾讯官方对外公布的域名查询接口,请求接口可实时查询域名在微信种的状态信息。如果状态异常则返回结果提示“域名被封”,如果未有异常则返回结果提示“域名正常”。 ​ 微信域名检测接口 格式一: http://www.60ht.cn/wxcheck/api.php?url=http://www.baidu.com 格式二: http://www.xiaocaoff.cn/api/check.php?url=http://www.baidu.com 应用场景 由于微信对外部链接内容规范比较严格,所以可能一不小心就会被判定为是违反内容规范的,或被同行恶意举报投诉之类的。 那么此时就要用到微信域名检测接口,实时检测域名的状态,从而才可以防患于未然,不影响推广。上面分享的微信域名拦截检测api,是采用微信官方接口打造,可以实时检测微信域名安全,有异常及时通知,非常稳定,准确率达100%。 请求说明 1、在线使用 将api接口地址中的“http://www.baidu.com”换成你需要检测的域名(带不带http://都可以),然后复制完整接口地址前往浏览器粘贴打开即可返回结果。 2、请求接口 如果觉得在线使用很麻烦,或者需要实时查询,那么需要将接口对接到服务器程序中,设置返回参数,即可实时检测并返回域名在微信内的状态。 请求示例 PHP调用演示 $url = 'http:/

HTTP Keep-Alive模式

主宰稳场 提交于 2020-01-19 11:35:55
故事发生在10月份的一次面试经历中,本来我不想说出来丢人显眼,但是为了警醒自己和告诫后人,我决定写成博文发出来。因为在面试过程中,我讲在2009年写过QQ农场助手,在这期间深入学习了HTTP协议,而且在2010-05-18写了博文: HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等 。面试官说既然我熟悉HTTP协议,就问“当HTTP采用keepalive模式,当客户端向服务器发生请求之后,客户端如何判断服务器的数据已经发生完成?” 说实话,当时我懵了,一直没有关注过keepalive模式。我只知道: HTTP协议中客户端发送一个小请求,服务器响应以所期望的信息(例如一个html文件或一副gif图像)。服务器通常在发送回所请求的数据之后就关闭连接。这样客户端读数据时会返回EOF(-1),就知道数据已经接收完全了。 我就这样被面试官判了死刑!!!说我完全停留在表面,没有深入(当时真的很受打击,一直自认为技术还不错!)。我当时真的很想找各种借口: 之前没有用到HTTP的keepalive模式,所以没有深入 好久没有用HTTP协议,细节忘了 实习的东西跟HTTP协议没有关系,用得少了就忘了 。。。。。。 觉得各种解释都是那么苍白无力!我再次感叹书到用时方恨少,也感叹一个人的时间是多么的有限(曾一度想成为一个IT专业全才),根本没有精力面面俱到

[原理] 说说Web请求的过程

家住魔仙堡 提交于 2020-01-19 01:41:39
在面试过程中,我们可能都遇到过这个问题,如果我们不是很理解整个过程,可能觉得就是客户端发送请求,服务端处理请求这个简单的过程。但是在工作中,我发现对这个问题理解的深度能让你更快且精确的定位到的问题的所在,最起码能知道是不是我们服务端的问题,接下来小生姑且根据目前自己的理解和参考资料对过程进行梳理。 文章目录 DNS解析域名 发起连接 三次握手 发送HTTP请求 路由转发和路由选择 Nginx反向代理 服务器处理请求 解析Http请求 跨域请求检测和处理 选择处理方法并响应 DNS解析域名 我们都知道Http/Https是基于TCP的应用层协议,他们其实对主机是不敏感的,但是其底层的TCP对主机是敏感的:TCP需要一个ip地址来唯一标识一个目的主机。我们在浏览器浏览时,通常都是输入www.xxx.com域名,我们需要的ip从何而来呢?这就要归功于DNS域名解析了。 DNS解析域名的原理其实就是建立了 <域名, ip> 的一个映射关系,这个映射关系可能保存在DNS服务器中,也可能在本地Hosts文件中。当你在浏览器输入www.baidu.com,主机会先对本地Hosts文件进行查询,如果存在映射,则直接使用Hosts文件中映射的ip地址;否则请求DNS服务器。一般后端都是使用nginx反向代理转发请求到集群,所以一般我们域名都是直接绑定nginx服务器,然后通过nginx管理集群列表。

iOS:即时通讯之<了解篇 SocKet>

余生颓废 提交于 2020-01-19 01:15:44
什么是socket? 计算机专业术语就是: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的 进程通信 机制,取后一种意思。通常也称作" 套接字 ",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的 主机 一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务 通俗语: Socket称"套接字” 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 socket端 ,平时我们向服务器发送一个网络请求,然后服务器响应请求,返回服务器数据应用程序通常通过"套接字"向网络发出请求或者应答网络请求 细节: 1.Socket相当于一个“管道”或者说“隧道”两边的连接,一个进入,一个出来 2.用户名和密码是存储在服务器的数据库中 3.我们要保证客户端程序是访问web应用程序还是数据库应用程序呢

HTTP请求的完全过程

[亡魂溺海] 提交于 2020-01-19 00:41:57
HTTP请求的完全过程 原创 艾伦lee 最后发布于2019-05-27 11:22:45 阅读数 2774 收藏 发布于2019-05-27 11:22:45 分类专栏: 计算机网络 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/ailunlee/article/details/90600174 展开 HTTP请求的完全过程 1.1 浏览器根据域名解析IP地址 浏览器根据访问的域名找到其IP地址。DNS查找过程如下: 浏览器缓存:首先搜索浏览器自身的DNS缓存(缓存的时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否是有域名对应的条目,而且没有过期,如果有且没有过期则解析到此结束。 系统缓存:如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束。 路由器缓存:如果系统缓存也没有找到,则会向路由器发送查询请求。 ISP(互联网服务提供商) DNS缓存:如果在路由缓存也没找到,最后要查的就是ISP缓存DNS的服务器。 1.2 浏览器与WEB服务器建立一个TCP连接 TCP的3次握手。 1.3 浏览器给WEB服务器发送一个HTTP请求 一个HTTP请求报文由请求行

python3_requests基本使用

微笑、不失礼 提交于 2020-01-18 22:23:02
0x01:简单介绍   requstst主要用途是发送网络请求。可以使用get、post、put、delete等方式请求。并且可以对请求头进行伪装,使用代理等。 0x02:基本用法   导入模块 pip install requests    获取网页 import requests #使用get方式获取网页源码 r = requests.get("https://baidu.com") r =r.text print(r) #使用post方式发送网站请求并获取返回数据 r = requests.post(url='http://httpbin.org/post',data={'key':'value'}) r = r.text print(r) #通过url传递参数 payload = {'key1':'value1','key2':'value2'} r = requests.get(url='http://httpbin.org/get',params=payload) print(r.url) # PUT请求 requests.put(“http://httpbin.org/put”) # DELETE请求 requests.delete(“http://httpbin.org/delete”) # HEAD请求 requests.head(“http://httpbin

HTTP协议详解

。_饼干妹妹 提交于 2020-01-18 14:43:44
HTTP 协议详解 HTTP 请求 1. 请求行 ( 请求方式、资源路径、协议及版本 ) GET /news3/1.html HTTP/1.1 GET :请求方式,在 HTTP 协议中一共规定了 7 种请求方式, 我们只关注 GET 和 POST /news3/1.html :请求资源的路径 HTTP/1.1 :浏览器发送请求时所使用的协议及版本 2. 若干请求头 http 协议中请求头非常多,下面列出常见的请求头及其功能: Accept: text/html,image/* -- 通知服务器当前浏览器可以接受那些格式的数据 Accept-Charset: ISO-8859-1 -- 浏览器可以接受的字符集编码 Accept-Encoding: gzip,compress -- 浏览器可以接受的压缩格式 !!Referer: http://www.tedu.cn/index.jsp -- 这是和防盗链相关的头 , 对当前资源的访问来自哪个页面的超链接 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) -- 客户端的基本信息 !!!Cookie ( 后面讲 ) -- 和 cookie 相关的头 Connection: close/Keep-Alive -- 是否继续保持连接 Date: Fri, 17 Feb

python requests高级耍法

允我心安 提交于 2020-01-18 12:01:58
昨天,我们更多的讨论了request的基础API,让我们对它有了基础的认知。学会上一课程,我们已经能写点基本的爬虫了。但是还不够,因为,很多站点是需要登录的,在站点的各个请求之间,是需要保持回话状态的,有的站点还需要证书验证,等等这一系列的问题,我们将在今天这一环节,加以讨论。 1.会话对象 会话:session,就是你点进这个站点后,由浏览器与服务器之间保持的一次连接。这次连接里面,你跳转页面,或发起其他请求,服务器要求某些数据验证。服务器不会叫你在每次跳转时候进行验证,而是用已验证的结果进行跳转。这样就节省服务器资源,底层的TCP连接也会被重用。 跨请求保持数据(客户端存数据): s = requests.Session() s.get(' http:// httpbin.org/cookies/set /sessioncookie/123456789 ') r = s.get(" http:// httpbin.org/cookies ") print(r.text) 回话提供请求默认数据(数据会被存到服务端): s = requests.Session() s.auth = ('user', 'pass') s.headers.update({'x-test': 'true'}) # 'x-test' 和 'x-test2' 一起发送给url s.get(' http://