有没有一种方法可以在不使用Selenium或浏览器客户端的情况下从在线应用程序提交表单?

脆皮炸薯条

我想建立一个自己的在线应用程序来管理库存,然后将其提交给本地分类站点。该本地分类站点没有API,只有一些具有多个步骤的老式HTML表单。

在不使用Selenium / webdriver或通过firefox / chrome扩展虚拟客户端的情况下,在网页上远程提交表单的方法是什么?由于提交过程是多个步骤,因此它必须支持某种会话。

我已经使用webdriver和python完成了此操作,这似乎是在线上类似问题的最受欢迎答案。

红影

通常,您应该能够使用任何HTTP客户端/库来执行此任务(因为在幕后,所有事情归结为仅对某些服务器进行正确的HTTP调用)。

这将有多难,在很大程度上取决于您与之交互的应用程序的设计方式(严重)。

在简单方案中,您需要:

  • 登录并跟踪会话cookie
  • 通过POST将数据发送到服务器

这里的示例使用Python requests,这几乎是当今最好的选择。

让我们开始吧。

首先,您需要检查您的登录页面表单。通常,查看HTML页面会为您提供有关如何构建请求的足够信息。

一个示例可能是:

<form action="/login" method="POST">
    <input type="text" name="username">
    <input type="password" name="password">
    ...
</form>

为了跟踪cookie,我们将使用一个Session对象:

import requests
session = requests.Session()

接下来,我们将通过POST提交凭据(假设您的应用程序位于http://example.com):

response = session.post(
    'http://example.com/login',
    data={'username': 'your_user', 'password': 'your_password'})

此时,您可以检查response.ok以确保一切正常。如果您进行检查session.cookies,则应该看到已设置会话cookie。

从现在开始,将使用该会话对您的应用程序发出的所有请求进行身份验证,因此等同于您从浏览器运行的请求。

要提交表单数据,只需开始检查应用程序的工作方式(通过检查表单来获取提交URI和表单字段名,就像我们对登录页面所做的那样,并使用同一会话通过POST提交数据)。

如果页面HTML很复杂,则使用浏览器开发人员工具查看HTTP请求并通过代码复制它们也可能会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以在不使用注释的情况下缩小我的角度应用程序?

来自分类Dev

有没有一种方法可以在不使用额外硬件的情况下将wifi客户端分配给无线路由器

来自分类Dev

有没有一种方法可以在不创建jar的情况下将Spark应用程序提交到集群?

来自分类Dev

有没有一种方法可以在使用Enter键提交的表单上隐藏本机浏览器的表单输入自动完成功能

来自分类Dev

有没有一种方法可以在未安装Chrome浏览器“环境”的情况下运行HTML文件?

来自分类Dev

有没有一种方法可以在不使用Drush的情况下从bash脚本安装Drupal?

来自分类Dev

有没有一种方法可以在不使用队列或Blob存储的情况下触发webjob?

来自分类Dev

有没有一种方法可以在不使用一个热编码器的情况下训练RNN?

来自分类Dev

有没有一种方法可以在不使用测试工具的情况下测试android应用操作

来自分类Dev

有没有一种方法可以在Java应用程序中创建Websocket客户端来与Node.js Websocket服务器通信?

来自分类Dev

有没有一种方法可以在不测试整个应用程序的情况下对类库(通用Windows)进行单元测试?

来自分类Dev

有没有一种方法可以在不更改路线的情况下向我已构建的Rails应用程序添加角度?

来自分类Dev

有没有一种方法可以在不使用表的情况下在MS-Access中创建表单?

来自分类Dev

有没有一种方法可以在不使用R中使用sample()函数的情况下创建向量的排列?

来自分类Dev

有没有一种方法可以在不使用className的情况下使用ID在React中设置元素的样式?

来自分类Dev

有没有一种方法可以在不使用R中使用sample()函数的情况下创建向量的排列?

来自分类Dev

有没有一种方法可以在不使用组的情况下引用re.sub中的整个匹配表达式?

来自分类Dev

Scala中有没有一种方法可以在不使用if嵌套的情况下转义多个return语句

来自分类Dev

PHP中有没有一种方法可以在不使用ob_gzhandler的情况下从JSON中删除空格?

来自分类Dev

有没有一种方法可以在不使用UINavigationController的情况下更改情节提要中的UINavigationBar的高度?

来自分类Dev

有没有一种方法可以在不使用嵌套循环的情况下将N个长度为N的N个数组推入数组?

来自分类Dev

有没有一种方法可以在不使用重命名系统调用的情况下更改文件名?

来自分类Dev

有没有一种方法可以在不使用负像素值的情况下简化和简化动画div?

来自分类Dev

有没有一种方法可以在不使用recurly.js的情况下从Recurly获取计费令牌?

来自分类Dev

有没有一种方法可以在不使用小部件的情况下访问PageState类中的页面属性

来自分类Dev

有没有一种方法可以在不使用SQL连接的情况下获取pg_stat_activity信息?

来自分类Dev

有没有一种方法可以在不使用python GIL的情况下进行序列化/反序列化

来自分类Dev

在JavaScript中,有没有一种方法可以在不使用toLocaleString的情况下将Date转换为时区?

来自分类Dev

有没有一种方法可以在不使用canvas API的情况下从图像文件获取二进制数据?

Related 相关文章

  1. 1

    有没有一种方法可以在不使用注释的情况下缩小我的角度应用程序?

  2. 2

    有没有一种方法可以在不使用额外硬件的情况下将wifi客户端分配给无线路由器

  3. 3

    有没有一种方法可以在不创建jar的情况下将Spark应用程序提交到集群?

  4. 4

    有没有一种方法可以在使用Enter键提交的表单上隐藏本机浏览器的表单输入自动完成功能

  5. 5

    有没有一种方法可以在未安装Chrome浏览器“环境”的情况下运行HTML文件?

  6. 6

    有没有一种方法可以在不使用Drush的情况下从bash脚本安装Drupal?

  7. 7

    有没有一种方法可以在不使用队列或Blob存储的情况下触发webjob?

  8. 8

    有没有一种方法可以在不使用一个热编码器的情况下训练RNN?

  9. 9

    有没有一种方法可以在不使用测试工具的情况下测试android应用操作

  10. 10

    有没有一种方法可以在Java应用程序中创建Websocket客户端来与Node.js Websocket服务器通信?

  11. 11

    有没有一种方法可以在不测试整个应用程序的情况下对类库(通用Windows)进行单元测试?

  12. 12

    有没有一种方法可以在不更改路线的情况下向我已构建的Rails应用程序添加角度?

  13. 13

    有没有一种方法可以在不使用表的情况下在MS-Access中创建表单?

  14. 14

    有没有一种方法可以在不使用R中使用sample()函数的情况下创建向量的排列?

  15. 15

    有没有一种方法可以在不使用className的情况下使用ID在React中设置元素的样式?

  16. 16

    有没有一种方法可以在不使用R中使用sample()函数的情况下创建向量的排列?

  17. 17

    有没有一种方法可以在不使用组的情况下引用re.sub中的整个匹配表达式?

  18. 18

    Scala中有没有一种方法可以在不使用if嵌套的情况下转义多个return语句

  19. 19

    PHP中有没有一种方法可以在不使用ob_gzhandler的情况下从JSON中删除空格?

  20. 20

    有没有一种方法可以在不使用UINavigationController的情况下更改情节提要中的UINavigationBar的高度?

  21. 21

    有没有一种方法可以在不使用嵌套循环的情况下将N个长度为N的N个数组推入数组?

  22. 22

    有没有一种方法可以在不使用重命名系统调用的情况下更改文件名?

  23. 23

    有没有一种方法可以在不使用负像素值的情况下简化和简化动画div?

  24. 24

    有没有一种方法可以在不使用recurly.js的情况下从Recurly获取计费令牌?

  25. 25

    有没有一种方法可以在不使用小部件的情况下访问PageState类中的页面属性

  26. 26

    有没有一种方法可以在不使用SQL连接的情况下获取pg_stat_activity信息?

  27. 27

    有没有一种方法可以在不使用python GIL的情况下进行序列化/反序列化

  28. 28

    在JavaScript中,有没有一种方法可以在不使用toLocaleString的情况下将Date转换为时区?

  29. 29

    有没有一种方法可以在不使用canvas API的情况下从图像文件获取二进制数据?

热门标签

归档