Python 中如何实现 onclick/button 事件背后的 POST 请求
目前正在写一个方便自己进行预约的脚本,查找最满意时间等步骤已经完成,但是最后提交不知道该如何进行,特来求助。
真实环境步骤:
- 点击需选定时间
- 点击弹出对话框的确认
- 完成预约
选定时间 (按钮) 代码:
<a class='dispo' type='button' href='javascript:void(0)' onclick='ajaxCall("ajax_form_status", "https://url")'>23:55</a>
点击时间后 POST 内容 (by Burp):
url=https%3A%2F%2Furl&some_data
点击确认后 POST 内容 (by Burp):
other_data
代码实现过程中,有如下困难:
- 最后一次确认没有 url,如何 POST ?
附:代码使用 requests package。
谢谢
Python 中如何实现 onclick/button 事件背后的 POST 请求
这些 time 不应该都是时间戳嘛
在Python里处理onclick/button事件背后的POST请求,主要看你是在做Web开发还是桌面GUI。Web开发里,你得用后端框架(比如Flask或Django)来接收前端发来的POST请求。
Web后端示例(使用Flask):
from flask import Flask, request, render_template_string
app = Flask(__name__)
# 一个简单的HTML页面,包含一个按钮
HTML = '''
<!DOCTYPE html>
<html>
<body>
<form method="POST" action="/handle_click">
<button type="submit">点击我发送POST请求</button>
</form>
</body>
</html>
'''
@app.route('/')
def index():
# 返回包含按钮的页面
return render_template_string(HTML)
@app.route('/handle_click', methods=['POST'])
def handle_button_click():
# 这个函数处理按钮点击后发来的POST请求
# 在这里写你的处理逻辑,比如处理数据、操作数据库等
print("按钮被点击了!收到了一个POST请求。")
# 处理完后,可以重定向或返回一个响应
return "POST请求已成功处理!"
if __name__ == '__main__':
app.run(debug=True)
代码解释:
@app.route('/'):定义了根路径,访问时返回一个简单的HTML页面。这个页面里有一个表单,表单里只有一个提交按钮。表单的method属性被设置为"POST",action属性指向/handle_click路径,这意味着点击按钮后,浏览器会向/handle_click这个URL发送一个POST请求。@app.route('/handle_click', methods=['POST']):这个装饰器定义了一个只接受POST方法的路由。当按钮被点击,表单提交时,请求就会发到这里。handle_button_click()函数:这是处理POST请求的核心。当请求到达时,这个函数会被调用。你可以在这里写任何你想执行的代码,比如解析请求中的数据(通过request.form或request.json),进行业务逻辑处理,然后返回一个响应给前端。
核心要点:
在Web开发中,按钮的“onclick”行为通常是通过HTML表单的submit或者JavaScript的fetch/XMLHttpRequest来触发一个HTTP请求到后端。Python后端(Flask、Django等)的工作就是定义好对应的URL(路由)和函数(视图函数)来接收并处理这个请求。你写的Python代码是在服务器端运行的,响应前端的请求。
如果是桌面GUI(比如用Tkinter、PyQt),那概念完全不同,是处理组件(如按钮)绑定的回调函数,而不是HTTP请求。你需要根据你的具体场景选择。
总结:用Flask或Django这类框架来定义路由处理前端的POST请求。
这点确实,太晚脑子不转了……
int(time.time() * 1000) 可以实现模拟,所以已经把这点从原文里删掉了。
谢谢。
这个网站不错,谢谢,收藏了。
不过没有 URL 的 POST 这里面没有提到呀。
我看有人使用 from selenium import webdriver 实现,不过想知道能不能通过 requests 的 post 实现,毕竟我不是要下载文件。
没 url 网页是怎么 post 的?
Burp 抓到的就是一些 Data。
没有加密环节的话直接看抓到的包就好了 没有 url 的话说明那一步本来就是废的
都用 burp 了…黑阔吗?没有 URL 怎么 post 传输呢?直接用 burp 的 repeat 重放,一般只有一个请求才是重要的,没有必要模拟所有动作。
用 Burp 测的时候,两次操作都需要 forward 才可以,drop 掉任何一个都不行。 我尝试将第二个也发往同样的 url,并没有成功预约到…
直接 firefox 抓的话,我没办法 drop 掉那个 post 包。
我在想会不会是要将两次的 data 一股脑一次发过去,晚上下班回家试试。
#9 方便的话可以直接把网站发出来
看实际情况效率会高很多
各位,我发出了两次详细的 Post 内容,求指导我想约的话,到底应该怎么 POST 呢?
谢谢
我突然意识到我被 data 里面的一个 url 弄晕了,实际两个都是有 POST 的 url 的……
我试着模拟了一下,暂时没有成功。
两层上面的 github 链接里面的 get_appointment 方程。 其它均测试过没有问题。
发了太多次链接,被警告了……
添加了临时方案,邮件通知提醒。
周末网上搜个护照试试真实 POST 是什么样子

