第九期_接口测试协议与代理_20190710

接口协议

tcpdump

三次握手

数据传输http

四次挥手

Chrome DevTool

通过curl命令发起接口请求

curl 'https://stock.xueqiu.com/v5/stock/batch/quote.json?symbol=SOGO' -H 'Accept: */*' -H 'Referer: https://xueqiu.com/k?q=sogo' -H 'Origin: https://xueqiu.com' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'   -H 'Cookie: _ga=GA1.2.97938473.1556791189; device_id=c15c898fa623317fdaa696b5b25ea4e6; s=by11ypznnb; bid=18a1bec4795f9c5967fd96c6a12e9fb0_jx34buyt; __utmz=1.1560941612.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); xq_token_expire=Sun%20Jul%2014%202019%2020%3A22%3A34%20GMT%2B0800%20(China%20Standard%20Time); __utma=1.97938473.1556791189.1560941612.1560947495.2; aliyungf_tc=AQAAAO7F8FPkQw0AD8UhfeKtPJ3NgRwO; xq_a_token=31a9197f6c2fd63c431607c37609c83c41d3d9ae; xqat=31a9197f6c2fd63c431607c37609c83c41d3d9ae; xq_r_token=7f3562df50a068f73074c63850444d2fd9d92e0c; u=861562755715298; Hm_lvt_1db88642e346389874251b5a1eded6e3=1560349510,1560939212,1561627825,1562755862; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1562765424'

协议交互的过程

GET /stock/search.json?code=sogo&size=3&page=1 HTTP/1.1
Host: xueqiu.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
elastic-apm-traceparent: 00-f680d3d81710bffc3ca33ad962f6dd47-86f58e210b618261-01
Referer: https://xueqiu.com/k?q=sogo
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: _ga=GA1.2.97938473.1556791189; device_id=c15c898fa623317fdaa696b5b25ea4e6; s=by11ypznnb; bid=18a1bec4795f9c5967fd96c6a12e9fb0_jx34buyt; __utmz=1.1560941612.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); xq_token_expire=Sun%20Jul%2014%202019%2020%3A22%3A34%20GMT%2B0800%20(China%20Standard%20Time); __utma=1.97938473.1556791189.1560941612.1560947495.2; aliyungf_tc=AQAAAO7F8FPkQw0AD8UhfeKtPJ3NgRwO; xq_a_token=31a9197f6c2fd63c431607c37609c83c41d3d9ae; xqat=31a9197f6c2fd63c431607c37609c83c41d3d9ae; xq_r_token=7f3562df50a068f73074c63850444d2fd9d92e0c; u=861562755715298; Hm_lvt_1db88642e346389874251b5a1eded6e3=1560349510,1560939212,1561627825,1562755862; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1562764650

HTTP/1.1 200 OK
Date: Wed, 10 Jul 2019 13:18:19 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 222
Connection: keep-alive
Server: openresty/1.11.2.4
Trace-Id: e96f0865496e6acc
X-Application-Context: application:production
Cache-Control: private, no-store, no-cache, must-revalidate, max-age=0
P3P: "CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""
Strict-Transport-Security: max-age=31536000

https://www.google.com/search?q=get+post+%E5%8C%BA%E5%88%AB&oq=get+post+%E5%8C%BA%E5%88%AB&aqs=chrome..69i57j69i64.3112j0j7&sourceid=chrome&ie=UTF-8

手工拼装http

localhost:~ seveniruby$ nc www.baidu.com 80
GET / HTTP/1.0
Host: www.baidu.com

HTTP/1.0 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 14615
Content-Type: text/html
Date: Wed, 10 Jul 2019 14:00:20 GMT
Etag: "5d0888c3-3917"
Last-Modified: Tue, 18 Jun 2019 06:46:27 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Pragma: no-cache
Server: BWS/1.1
Set-Cookie: BAIDUID=A27CD1289379B8280B0B2A26E2699F25:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=A27CD1289379B8280B0B2A26E2699F25; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1562767220; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1

<!DOCTYPE html><!--STATUS OK-->
<html>
<head>

常见面试题

  • GET POST区别
  • session与cookie的区别

代理

charles的rewrite功能可以实现mock与数据的解依赖

课后作业

  • 用curl命令发起对百度的一个搜索请求,修改header,在里面加上自己的名字,比如xxx@hogwarts
  • 用rewrite修改下股票的价格,把股价放大很多倍