1、秋名山老司机
题目:
解答:
其一:第 7 行是利用正则表达式截取响应内容中的算术表达式。首先引入 re 模块,其次用 search() 匹配算术表达式,匹配成功后用 group() 返回算术表达式的字符串。(想掌握正则表达式,还是要多看、多想、多练,毕竟应用场合非常之广)
其二:search() 的第一个参数是匹配的正则表达式,第二个参数是要匹配的字符串。其中 \d+代表一个或多个数字;[+-] 匹配一个加号,或一个减号,或一个乘号,注意减号在中括号内是特殊字符,要用反斜杠转义;(\d+[+-])+代表一个或多个由数字与运算符组成的匹配组;最后再加上剩下的一个数字 (\d+)。
其三:第 9 行在获得算术表达式的字符串后,直接利用 Python 的內建方法 eval() 来计算出结果,简单、暴力、快捷。
其四:
比如题目要你你传一个id
那你就{“id”:“1”}
以下为详细介绍
第一部分:
request文件加载至pip中
先进入到pip中
2、要更新pip(输入:Python -m pip install --upgrade pip)否则会出现错误提示
3、在pip中加载request(输入:Python -m pip install --upgrade pip)
4在python终端验证
第二部分
Request在该题型中的基本用法
会话对象 Session()
Session 是存储在服务器上的相关用户信息,用于在有效期内保持客户端与服务器之间的状态。Session 与 Cookie 配合使用,当 Session 或 Cookie 失效时,客户端与服务器之间的状态也随之失效。
有关 Session 的原理可参见以下文章:
session的根本原理及安全性
Session原理
requests 模块中的 会话对象 Session() 能够在多次请求中保持某些参数,使得底层的 TCP 连接将被重用,提高了 HTTP 连接的性能。
Session() 的创建过程如下:
s = requests.Session()
在有效期内,同一个会话对象发出的所有请求都保持着相同的 Cookie,可以看出,会话对象也可以通过 get 与 post 方法发送请求,以发送 GET 请求为例:r = s.get(‘https://github.com/’)
(以上截取该博客内容:https://blog.csdn.net/qq_26090065/article/details/81583009#%E3%80%90Bugku-CTF%E3%80%91-Web-%E2%80%94%E2%80%94-%E7%A7%8B%E5%90%8D%E5%B1%B1%E8%80%81%E5%8F%B8%E6%9C%BA)
第三部分
re模块的作用及在题中所用函数:
正则表达式是用来匹配处理字符串的 python 中使用正则表达式需要引入re模块如:import re
re模块中search()函数(该题中所使用到的)
search,浏览全部字符串,匹配第一符合规则的字符串,浏览整个字符串去匹配第一个,未匹配成功返回None
search(pattern, string, flags=0)
pattern: 正则模型
string : 要匹配的字符串
falgs : 匹配模式
注意:match()函数 与 search()函数基本是一样的功能,不一样的就是match()匹配字符串开始位置的一个符合规则的字符串,search()是在字符串全局匹配第一个合规则的字符串
能函数
第四部分
Group的用法
在Python中,正则表达式中,group()用来提出分组截获的字符串,()用来分组
例如:
import re
a = “123abc456"print re.search(”([0-9])([a-z])([0-9])",a).group(0) #123abc456,返回整体print re.search("([0-9])([a-z])([0-9])",a).group(1) #123print re.search("([0-9])([a-z])([0-9])",a).group(2) #abcprint re.search("([0-9])([a-z])([0-9])",a).group(3) #456
说明:
- 正则表达式中的三组括号把匹配结果分成三组
group() 同group(0)就是匹配正则表达式整体结果
group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。 - 没有匹配成功的,re.search()返回None
- 当然郑则表达式中没有括号,group(1)肯定不对了
第五部分
Eval函数功能
eval() 函数可将字符串转换为代码执行,并返回一个或多个值
函数原型
返回值 = eval( codeString )
函数说明
如果eval函数在执行时遇到错误,则抛出异常给调用者.
类似的函数是loadcode ,loadcode并不立即执行代码,而是返回一个函数对象.
并且loadcode支持路径参数,eval并不支持. eval并不支持代码中的return语句,而是将代码作为表达式直接计算出结果.
第六部分
发送 GET 请求与 POST 请求
以 Github 官网为例,对其发起 GET 请求;
r = requests.get(‘https://github.com/’)
对其发起 POST 请求:r = requests.post(‘https://github.com/’)
查看响应内容
对 Github 官网发起请求,查看服务器返回页面的内容,以查看 GET 请求的响应内容为例,POST 请求同理:r = requests.get(‘https://github.com/’)
r.text