【问题标题】:Hi, I'm writing a bot in requests to fill out an HTML form. Have some questions about values and the payload嗨,我正在编写一个机器人来填写 HTML 表单。对值和有效负载有一些疑问
【发布时间】:2020-07-19 23:11:54
【问题描述】:

我创建了一个程序来在 Selenium 中填写 HTML 网页表单,但现在我想将其更改为请求。但是,我遇到了一些障碍。我是请求的新手,我不确定如何模拟请求,就好像在原始网站上按下了按钮一样。这是我到目前为止所拥有的 -

import requests
import random
emailRandom = ''
for i in range(6):        
    add = random.randint(1,10)
    emailRandom += str(add)
payload = {
    'email':emailRandom+'@redacted',
    'state_id':'34',
    'tnc-optin':'on',   
}
r= requests.get('redacted.com', data=payload)

我试图在网页上“点击”的按钮如下所示 -

<div class="button-container">
    <input type="hidden" name="recaptcha" id="recaptcha">
    <button type="submit" class="button red large">ENTER NOW</button>
</div>

这个按钮的默认值/“点击”值是多少?我可以使用我的请求代码使用它来提交表单吗?

【问题讨论】:

    标签: python html python-requests


    【解决方案1】:

    使用 selenium 和使用请求是两件不同的事情,selenium 使用您的浏览器通过 html 呈现的 UI 提交表单,Python 请求只是从您的 python 代码中提交数据而没有 html UI,它不涉及“点击”提交按钮。

    在这种情况下,“提交”按钮只是触发浏览器 POST 表单值。

    但是,您的后端将根据“recaptcha”令牌进行验证,因此您需要解决这个问题。

    【讨论】:

    • 对。我知道,对不起。我知道它需要我发送一个有效负载,我只是不知道那个元素的“点击”值是什么,所以我可以在我的请求有效负载中发送它
    • 关于按钮我需要知道的是如何触发它。
    • 当你在python中使用请求时,你并没有“触发”按钮,按钮不存在,因为你没有渲染的前端。
    【解决方案2】:

    推荐你摆弄请求。

    https://www.telerik.com/fiddler

    他们正在重新创建它们。

    James 使用 selenium 的回答比这慢。

    【讨论】:

    • 我不建议使用 selenium,OP 提到了它,我认为他对它们感到困惑。
    • 嗨,我下载了 fiddler 并添加了我在 composer 中找到的键和值。这将如何帮助我找到解决问题的方法?
    • 您好,您可以根据您发送的数据重新创建这些请求。
    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 2021-10-28
    • 2021-01-26
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多