fiddler抓包修改金额_第二十七课 如何抓包?(助你更好地使用HTTP请求组件)...

        大家好,继第二十六课 - 汇率查询(http请求的应用)后,这节课我们继续讲讲有关HTTP请求的内容。从标题可知,本节课会着重讲解如何抓包,从而在云扩RPA中使用HTTP请求时会更加得心应手。

准备工作:

1)准备开发流程的电脑,请打开云扩学院链接查看云扩RPA编辑器运行的硬件&软件要求(https://academy.encoo.com/wiki/Studio/quickStart/HarewareAndSoftwareRequirements.md?)。

2)打开云扩官网(https://www.encoo.com/)下载编辑器并安装。

3)安装Fiddler

     首先介绍下什么是HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络传输协议,它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

有关于HTTP基础教程请参考:

https://www.runoob.com/http/http-tutorial.html

a57552e055f7e9bc0c66c39e3a816151.png

客户端发送一个到服务器的HTTP请求一般包括请求行(请求方法、URI、协议/版本)、消息报头、请求正文,如下图所示:

ad961383bff9c24bc66219c0b5d461b0.png

如何分析HTTP请求和使用HTTP请求组件?

1. 拖入“HTTP请求”组件,点击“设置请求方式”:

74d923e97ce5c3a5ce7d365b3f512d9c.png

2. 从抓包工具Fiddler看到的请求数据如图,观察发现存在方法、URL、内容类型、头部、正文:

b0eea52896b1ecda01dc45b7b35a01e6.png

3. 配置“设置请求方式”页面

  • 头部信息可能存在多个,一般选择几个比较重要的写入(比如Cookie之类,实在不行可全部放入)

  • 正文包含在双引号内("),正文内容中包含的双引号用两个双引号替换

  • HTTP请求中方法和URL必填,内容类型、头部、正文根据不是必填,需要根据不同的请求协议做判断(上述案例需要完整填入)

563b66ddc7160ba17ea44aab55b2ff37.png

方法:POSTURL:"https://ocrapi-ugc.taobao.com/ocrservice/ugc"内容类型:application/json头部:key = "Authorization",value="APPCODE xxxxxxxxxxxxxxxxxxxxx"正文:"{""img"": ""iVBORw0KGgo(内容太多,只放入部分)AAAANSUhEUgAAAc""}"

抓包工具介绍 - Fiddler

上面我们学习了如何分析HTTP请求和如何运用HTTP请求组件,很多系统客户不会提供接口文档,当我们需要获取某些数据时需要自己去分析,以下提供一个抓包案例:

小编最近做的一个项目,需要获取CRM系统中的特定单号的金额和数量,问题是此CRM系统仅仅支持某小众浏览器,金额和数量是以弹框形式展示,用获取文本组件不能获取所需要的内容,经研究后发现使用HTTP请求方法可以获取金额和数量(如果客户可以提供接口文档,可以忽略抓包教程),市面上抓包工具很多,Google Chrome, Fiddler, Charles, Wireshark等等,本课中我们介绍Fiddler。

第一步:安装Fiddler,具体可参考Fiddler的官方文档

https://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureFiddler

dea4e056f970e017a06669bfded7956a.png

Fiddler界面的左边是捕捉到的所有HTTP请求列表,点击需要查看的请求,界面的右上部分窗口是HTTP请求的详细信息,点击Raw选项卡,可以看到HTTP请求的原始信息,除头部信息外,还可以看到Cookie和请求数据内容,界面的右下角是HTTP的响应内容

bca9c8ecd62a7b45371f263400e323d7.png

第二步:打开CRM查询页面,输入需要查询内容,点击查询按钮,这时候会发现Fiddler所有请求页面增加了一条(或几条)请求,怎么判断这条请求消息是有用的呢,一般情况分析此请求消息的响应消息,若响应消息里有我们需要的内容,就可以拿来使用

1e895a166db241cde3b4c1c9fd1e4078.png

Fiddler抓包截图如下,方法、URL、内容类型、头部(除Cookie)、正文,都有明确字段

aa653728b62ce34eec0da6ac2b27b242.png

我们尝试使用Postman(接口测试工具)验证此接口通过,但是一旦Cookie过期或者重新登录,此接口验证即失败,这一步,我们需要考虑注入Cookie操作,使用Selenium模拟登录操作获取所需要的Cookie并保存在本地,下面是登录页面Python代码

driver = webdriver.Chrome()driver.get("URL")driver.find_element_by_xpath('登录用户名的XPath').clear()driver.find_element_by_xpath('登录用户名的XPath').send_keys(username)driver.find_element_by_xpath('登录密码的XPath').clear()driver.find_element_by_xpath('登录密码的XPath').send_keys(password)driver.find_element_by_xpath('提交按钮的XPath').click()# 登录后,获取Cookie方法datacomm = driver.get_cookies()for i in datacomm:    print(i['value'])    cookie = "JSESSIONID=" + i['value']filepath = "D:\RPA\cookie.txt"with open(filepath, "w") as file:  # ”w"代表着每次运行都覆盖内容    file.write(cookie)

获取到的完整Cookie

[{'domain': 'partner.li-ning.com.cn', 'httpOnly': False, 'name': 'JSESSIONID', 'path': '/', 'secure': False, 'value': '0001gx26W6Gm1s4uMXP9fuwSkpr:1acvpjor4'}]

根据Fiddler所需要的Cookie数据,只取value中的值

JSESSIONID=0001gx26W6Gm1s4uMXP9fuwSkpr:1acvpjor4

参考:

Selenium:http://www.selenium.org.cn/

Postman:https://www.postman.com/

第三步:选中刚查询到的单号,点击客户收货确认按钮

8f62506bae298a82a0ba0d35b4c35614.png

Fiddler抓包截图如下,其中URL多了jhd和cjrq不确定字段,观察发现这2个字段可以通过第一个响应消息里截获。注意,此接口也需要注入Cookie。

Postman验证此接口通过,获取响应消息中的金额和数量。

75ba926e58150f08b801dba71424681f.png

至此,我们可以通过HTTP请求成功获取到特定单号中的数量和金额。

由于上述情况需要Cookie注入,Cookie是存在过期时间的,一旦过期,请求的内容会失败或者不准确,建议判断响应消息中是否包含特定字符,若未包含,那程序需要重新登录去获取新的Cookie。

总结来说,在未提供接口文档的前提下,HTTP请求需要人为去分析相关的请求中的关联关系,可能会遇到一些难以绕过的点,普通的内部系统一般针对查询操作问题不大,如果遇到Token或者经过加密的字段难度会比较大,需要具体情况具体分析。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值