ajax-hook+ selenium抓取带参数的 Ajax 数据

简介: ajax-hook+ selenium抓取带参数的 Ajax 数据

环境

依赖安装

pip install flask-cors flask selenium

安装chromedriver

mac下安装selenium+phantomjs+chromedriver

实现代码

1、hook.js

监听 XMLHttpRequest 请求

// 打开链接,复制代码到这里

// https://unpkg.com/ajax-hook@;2.0.3/dist/ajaxhook.min.js
// https://unpkg.com/axios/dist/axios.min.js


ah.proxy({
//请求成功后进入
onResponse: (response, handler) => {
if (response.config.url.startsWith('/api/movie')) {
axios.post('http://localhost:5000/receiver/movie', {
url: window.location.href,
data: response.response
})
console.log(response.response)
handler.next(response)
}
}
})

2、main.py

驱动chrome

# -- coding: utf-8 --
from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get('https://dynamic2.scrape.center/';)
browser.execute_script(open('hook.js').read())
time.sleep(2)

for index in range(3):
print('current page', index)
btn_next = browser.find_element_by_css_selector('.btn-next')
btn_next.click()
time.sleep(2)

browser.close()
browser.quit()

3、server.py

接收数据的服务,可以进一步将数据存入数据库

# -- coding: utf-8 --
import json
from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app)


@app.route('/receiver/movie', methods=['POST'])
def receive():
content = json.loads(request.data)
print(content)
# to something
return jsonify({'status': True})


if name == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)

参考

如何用 Hook 实时处理和保存 Ajax 数据

            </div>
目录
相关文章
|
机器学习/深度学习 搜索推荐
阿里巴巴EMO对数字人行业的影响
【2月更文挑战第13天】阿里巴巴EMO对数字人行业的影响
1453 2
阿里巴巴EMO对数字人行业的影响
|
安全 Unix Linux
CentOS7 Sudo本地提权漏洞修复实践
CentOS7 Sudo本地提权漏洞修复实践
1577 0
CentOS7 Sudo本地提权漏洞修复实践
|
存储 JavaScript API
vue3+ant design vue 自定义文件上传和自定义上传进度条
1.关键点是Upload组件中customRequest的API,它能通过覆盖默认的上传行为,可以自定义自己的上传实现(具体可看官方文档); 2.通过在Upload组件中绑定progress实现。 下面是详细代码
3524 0
|
Java Android开发
Android12 双击power键启动相机源码解析
Android12 双击power键启动相机源码解析
352 0
|
SQL 关系型数据库 MySQL
MySQL操作利器——mysql-connector-python库详解
MySQL操作利器——mysql-connector-python库详解
2504 0
|
存储 数据采集 NoSQL
JWT本无状态,为何却要存储在Redis破坏其无状态特性?
JWT本无状态,为何却要存储在Redis破坏其无状态特性?
887 0
JWT本无状态,为何却要存储在Redis破坏其无状态特性?
Hadoop-HDFS文件块的校验
集群启动过程中,DataNode会校验自己的文件,并上报校验结果到NameNode。校验一般使用CRC即循环冗余校验码。
673 0
|
负载均衡 Java 应用服务中间件
Gateway怎样实现服务转发? | 带你读《Spring Cloud Alibaba(2019)》之十
本节重点介绍了Gateway整合Nacos实现服务转发的过程以及Nginx与网关的区别。
15255 0
Gateway怎样实现服务转发? | 带你读《Spring Cloud Alibaba(2019)》之十
|
Java
图片上传接口 (alipay.offline.material.image.upload)JAVA版本demo
说明:       该接口一般结合口碑开店接口使用,官方文档:[url]https://docs.open.alipay.com/common/105258[/url]       以及结合会员卡中的上传背景图片等联合使用 调用代码示例: //上传门店照片接口(alipay.
1615 0

热门文章

最新文章