【Python】Ajax使用总结

本文总结了Python中使用Ajax的基本技巧,包括如何传递一般字符串、Json字符串以及列表数据。通过设置dataType为json,可以方便地处理后台的json数据。同时介绍了jQuery的JSON.parse()和JSON.stringify()方法,以及Python的json.dumps()和json.loads()函数,用于字典与json字符串的相互转换。在传递列表时,需注意将traditional设置为true。

ajax基本用法:

1、使用ajax传递一般字符串

$.ajax({
    url : '/modal_edit_student/',
    type : 'POST',
    data : {'name': name,'class_id': class_id, 'id': id},
    success : function (args) {
        if (args.status) {
            location.reload();
        } else {
            alert(args.msg);
        }
    }
});

后台接收数据:request.POST.get('name')

 

2、ajax传递Json字符串

 $.ajax({
    url : '/modal_edit_student/',
    type : 'POST',
    data : {'name': name,'class_id': class_id, 'id': id},
    dataType : 'JSON',
    success : function (args) {
      if (args.status) {
         location.reload();
      } else {
         alert(args.msg);
        }
    }
});

设置dataType为json,这样可以直接接收后台的json序列

jquery内置的json方法:

      JSON.parse() ---- 将json字符串还原成字典格式

      JSON.stringfy() ---- 将字典转换成json字符串

python的json方法:

    import json

          json.dumps() ---- 将字典转换成json

          json.loads() ---- 将json还原成字典

 

3、ajax传递列表

$.ajax({
	url : '/modal_add_teacher/',
	type : 'POST',
	data : {'name': name,'class_ids': class_ids},
	traditional: true,
	success : function (args) {
		args = JSON.parse(args);
		if (args.status) {
			location.reload();
		} else {
			console.error(args.msg);
		}
	}
});

若参数中有列表(如上class_ids),需要将traditional设置为true,这样可以直接传送列表

后台接收列表:

      request.POST.getlist('class_ids')

 

 

 

 

### Python进行Ajax逆向分析的教程 Ajax逆向分析是通过研究网站前端与后端交互的机制,解析并模拟这些请求的过程。Python作为一种强大的编程语言,可以很好地辅助完成这一任务。以下将详细介绍如何使用Python进行Ajax逆向分析。 #### 1. 确定目标网站的Ajax请求 在进行Ajax逆向分析时,首先需要明确目标网站中哪些数据是通过Ajax加载的。可以通过浏览器开发者工具(如Chrome DevTools)中的“Network”选项卡观察页面加载时发出的请求[^1]。找到带有`XHR`标识的请求,这些通常是Ajax请求。 #### 2. 模拟Ajax请求 一旦确定了目标Ajax请求,接下来需要模拟该请求。这包括设置正确的请求头、参数和方法等。以下是模拟Ajax请求的基本步骤: - **获取请求URL**:从开发者工具中复制Ajax请求的完整URL。 - **设置请求头**:Ajax请求通常携带特定的头部信息(如`User-Agent`、`Referer`等),需要在Python代码中设置相同的头部信息以避免被服务器拒绝。 - **发送请求**:使用`requests`库发送GET或POST请求。 示例代码如下: ```python import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Referer': 'https://example.com' } url = 'https://example.com/api/data' response = requests.get(url, headers=headers) print(response.text) ``` #### 3. 解析返回的数据 Ajax请求返回的数据通常为JSON格式。可以使用Python内置的`json`模块解析返回的内容。 示例代码如下: ```python import json data = response.json() pprint(data) ``` #### 4. 处理动态生成的参数 某些网站为了防止爬虫,会在Ajax请求中加入动态生成的参数(如`token`)。此时需要对前端JavaScript代码进行逆向分析,找出参数生成的逻辑。如果参数生成逻辑过于复杂,可以直接在Python中执行JavaScript代码来获取这些参数[^4]。 示例代码如下: ```python from pyexecjs import execjs # 加载JavaScript代码 js_code = """ function generateToken() { // 假设这是生成token的函数 return "generated_token"; } """ ctx = execjs.compile(js_code) token = ctx.call("generateToken") print(token) ``` #### 5. 使用Selenium处理复杂的交互 对于一些依赖于浏览器环境才能正常运行的Ajax请求,可以使用Selenium模拟浏览器行为。Selenium支持多种浏览器驱动,能够真实地模拟用户操作。 示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') # 执行JavaScript代码 token = driver.execute_script("return generateToken();") print(token) driver.quit() ``` #### 6. 注意事项 - **合法性**:在进行Ajax逆向分析前,请确保已获得目标网站的授权,以免触犯相关法律法规[^2]。 - **反爬机制**:许多网站会采取各种措施防止爬虫访问,例如IP限制、验证码等。需要根据实际情况采取相应的反制措施。 --- ### 总结 Python进行Ajax逆向分析的核心在于模拟请求、解析数据以及处理动态生成的参数。通过结合`requests`、`json`、`execjs`和`Selenium`等工具,可以高效地完成这一任务[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值