爬取数位观察城市数据知识总结

本文介绍了如何从网页上抓取隐藏的数据,包括在xhr和js中的数据处理,以及如何通过AES加密和解密来获取城市GDP等信息,重点讲述了如何找到并利用interceptors和解密密钥的过程。
摘要由CSDN通过智能技术生成
# 抓取数位观察中城市的GDP,公交车数量,户籍人口
# url = "https://www.swguancha.com/home/query-city-page"
# 1.找数据
# 1.1如果数据在页面源代码里,则访问,在本案例中并没有在源代码中
# 1.2如果数据不在页面源代码里,则要抓包,一般在xhr选项中
# 1.3在XHR与JS中可能占比7:3,如果网站有分页,多点点分页,增加的为需要的包
#    如果参数是以requests payload的形式挂载在请求体上的,此时,请求头中的content-type必须和浏览器一致,否则服务器无法解析你的数据

#    请求头如果以user-agent结尾,则没有什么特殊的,如果后面还有x-什么的一大串,则是自己需要添加的逆向的,不是浏览器自带的。还有deviceType,content-type需要带上。

# requests.post传递参数的时候,如果传的是字典,默认会被处理成form data形式 即current=1&dimensionTime=2019&levelType=2&propertyCode=DISTRICT_PROP_GJ025_RJDQSCZZ&propertyCode=DISTRICT格式
# 但是浏览器传递的是json格式,所以发生了错误,解决的方法,import json,json.dumps(data)转换为json字符串格式,或者在传递参数的时候json = data
# 通过访问获取到密文数据UiY3CaV4ZQrQR9/LFH5qq2F4H8zkRn76NFu...接下来就是解密

# 通过观察,该网站多个不同的url都进行了加密,正常情况下应该是用一套加密逻辑的,我们可以直接搜interceptors拦截器

如何搜索呢:

如何弹出控制窗口:

点击三个点,点击Hide console drawer即可 

 

在search下搜索interceptors

 

 

这种类型的与解密无关

 

 获取关键代码

t.data是被加密的数据
 var n = u.enc.Utf8.parse(l)   # 把l处理为编码为utf-8
                      , r = u.AES.decrypt(t.data, n, {  # AES.decrypt AES解密
                        mode: u.mode.ECB,
                        padding: u.pad.Pkcs7
                    })
                      , i = r.toString(u.enc.Utf8)
                      , s = JSON.parse(i);
                    t.data = s


’‘’
解密方式:AES
密钥:l.encode("utf-8")  # 'QV1f3nHn2qm7i3xrj3Y9K9imDdGTjTu9'.encode('utf-8')
模式:ECB
padding:PKCS7  ->unpad

 如何获取密钥呢?

打断点:

 

然后点击下一个页面,页面会暂停住 

 

通过console获得密钥,在写代码时,要将密钥转为utf-8的格式 

 

 

 

 

 

如何干掉填充呢:

 

ming_bs = unpad(ming_bs,16) 

将加密数据转为字节:

base64.b64decode(response.text)

再进行解密:

ming_bs = unpad(ming_bs,16)    # AES处理的长度就是16
ming = ming_bs.decode("utf-8")

再将解密的数据转为utf-8格式

ming = ming_bs.decode("utf-8")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习各种软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值