url格式一定只有一个问号_Flask 和 requests 搭建一个简单的API服务

本文介绍如何利用Flask搭建API服务和requests进行数据获取。分析腾达路由器管理页面,发现GET请求参数,确定URL格式。通过分析JS文件获取所有有效参数,并整理出请求URL模板,为构建API服务提供思路。
摘要由CSDN通过智能技术生成
c13bcc45cefc01903349b5b46fa2030a.png

路由器为腾达路由器,使用requests来进行数据的获取,使用flask来进行实现api的搭建

requests我就不介绍了,这个大家都很熟悉了,这篇文章主要是来提供一个编写爬虫的思路以及flask怎么搭建一个简单的api服务。

1.分析页面

我使用的是腾达路由器,一般路由器的管理ip地址是192.168.0.1

1858a3291bc01ab55566a80188458897.png ac33f87a90acd8886e2f1354153dd4e4.png

进入之后的页面长这样

按下F12进入开发者页面选择network选项可以看到下面的样子

6b16457bd6bcd142af8f34f2897dbedb.gif

通过分析会发现,路由器是采用轮询(按照一定的时间间隔来向服务器来获取数据)的方式来获取数据,从这里可以获取发送请求的类型==>是GET类型,以及一些发送的参数http://192.168.0.1/goform/getStatus?random=0.46529553086082265&modules=internetStatus%2CdeviceStatistics%2CsystemInfo%2CwanAdvCfg%2CwifiRelay%2CwifiBasicCfg%2CsysTime在问号后面的有两个参数,分别是randommodules,通过测试发现,random这个参数不影响数据的获取,所以将其删去,剩下的url部分变成了http://192.168.0.1/goform/getStatus?modules=XXX,接下来确定XXX的值从上面的gif可以发现,这里modules的值是internetStatus,deviceStatistics,systemInfo,wanAdvCfg,wifiRelay,wifiBasicCfg,sysTime,可以发现这里应该是从路由器获取的各个参数,我们换一个页面来看一下,是不是会有其他的参数

40ca516b2d7004bb61fa6e70a5da6b2a.gif

从上面的gif发现这里出现了其他参数,甚至连url的地址都变了。所以现在当务之急的找到一个确定的url来使用requests发送请求,获取数据。到这里,来分析network这里的内容会让工作变得困难,不如来分析一个js文件(因为前面发现所有的GET请求都是xhr类型的,也就是ajax来进行发送的数据)

7bad0daea221c0afe1a2871443bb55e0.png

从这里发现了好几个js文件,打开后分析

121542d4409b701ee3165fd0c4cde966.png 0f3bf1a8bb7876c157b7a138e3bf368c.png e51f0a7e0033a8a0194ed086e347c104.png 30d7dbfce7fcd7b38599bb338e66f2ab.png 2dffc5b8d3cbf14bcf8f5399d943b9b1.png effe7de728668fb03777d45f48361876.png 8f7284da31a60f35fba0cccbf8890423.png

分别在js文件里面获得了几乎所有的参数,而且发现了url的规律,gofrom/后面的路径不起作用,真正起作用的是modules的值,路由器根据值的不同来返回不同的数据。

把上面所有的modules的值收集起来,经过去重后获得了下面33个参数

wifiBasicCfgwifiAdvCfgwifiPowerwifiWPSwifiGuestwifiBeamformingloginAuthwanAdvCfglanCfgsoftWarewifiRelaysysTimeremoteWebisWifiClientssystemInfohasNewSoftVersioninternetStatusdeviceStatisticsparentCtrlListparentAccessCtrlwanBasicCfglocalhostonlineListmacFilterguestListstaticIPListIPTVportListddnsdmzupnpping

到这里基本上分析的差不多了,来整理一下

url是http://192.168.0.1/goform/getStatus?modules=XXX,其中getStatus这个路径可以是上面的js里面的任意一个getUrl的值,返回的值是由modules的值来确定的。

2.发送请求(上代码)

import requests

import json

module = [
"wifiBasicCfg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值