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 请求

16 回复

这些 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)

代码解释:

  1. @app.route('/'):定义了根路径,访问时返回一个简单的HTML页面。这个页面里有一个表单,表单里只有一个提交按钮。表单的method属性被设置为"POST"action属性指向/handle_click路径,这意味着点击按钮后,浏览器会向/handle_click这个URL发送一个POST请求。
  2. @app.route('/handle_click', methods=['POST']):这个装饰器定义了一个只接受POST方法的路由。当按钮被点击,表单提交时,请求就会发到这里。
  3. handle_button_click()函数:这是处理POST请求的核心。当请求到达时,这个函数会被调用。你可以在这里写任何你想执行的代码,比如解析请求中的数据(通过request.formrequest.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 是什么样子

回到顶部