抓取网络请求Network中的响应JSON数据,不用JS逆向和RPC,python selenium+browser-proxy

我们要获取这里的响应的JSON数据,但是它的请求头里面带有加密数据,需要js逆向,或者RPC才能拿到,现在介绍一种方法,免去以上过程就可以轻松拿到响应数据。

显然上面的红框是加密数据。 

 下面正式开始

下载browsermob-proxy文件

首先要检查电脑是否安装了JDK8,高版本的好像不行,如果没有安装,则需要进行安装。这里不介绍了。下面下载两个东西:

(1)python包的安装:pip3 install browsermob-proxy

(2)组件下载地址:https://github.com/lightbody/browsermob-proxy/releases,下载之后解压,后面会用到

完整代码:

import time
from browsermobproxy import Server
from selenium import webdriver

server = Server(".\\browsermob-proxy-2.1.4\\bin\\browsermob-proxy.bat")
server.start()
proxy = server.create_proxy()

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy))

browser = webdriver.Chrome(options=chrome_options) # 打开浏览器
browser.maximize_window()  # 最大化窗口

url = '所要访问的网址'

# 这里要开一个新的har,用来记录下面打开网址的请求记录,起名为log
# 如果重复访问很多网站,那么每次都得新开一个har,不然一直用一个har,
# 它会累积记录所有的访问和请求数据,每次新开一个再去访问,它只会记录
# 当前的网页的请求
proxy.new_har("log", options={'captureHeaders': True, 'captureContent': True, 'captureBinaryContent': True})
browser.get(url)
time.sleep(60)
# 此处最好暂停几秒等待页面加载完成,不然会拿不到结果,我这里等待的是秒,自己根据情况调整
result = proxy.har

for entry in result['log']['entries']:
    _url = entry['request']['url']
    # entry每一个请求URL都对应着一个response,我们只需要判断URL找出自己想找的那个JSON就好
    if "这里放你需要拿到的JSON数据的请求头中的URL" == _url: #如果两个相等,则可能是我们想要的数据,因为这个URL可能有多个,
        # 在后面拿到数据之后再进一步判断即可
        _response = entry['response']
        _content = _response['content']
        print(_content)

server.stop()
browser.quit()

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值