使用 Python 请求发送 ASP.net POST

2023-11-25

我正在使用 Python 的请求模块抓取一个旧的 ASP.net 网站。

我花了 5 个多小时试图弄清楚如何模拟这个 POST 请求,但没有成功。按照我下面的方式执行此操作,我基本上会收到一条消息:“没有项目与此项目引用匹配”。

任何帮助将不胜感激 - 这是请求和我的代码,出于简洁和/或隐私的考虑,修改了一些内容:

我自己的代码:

import requests

# Scraping the item number from the website, I have confirmed this is working.

#Then use the newly acquired item number to request the data.
item_url = http://www.example.com/EN/items/Pages/yourrates.aspx?vr= + item_number[0]
viewstate = r'/wEPD...' # Truncated for brevity.

# Create the appropriate request and payload.
payload = {"vr": int(item_number[0])}

item_request_body = {
        "__SPSCEditMenu": "true",
        "MSOWebPartPage_PostbackSource": "",
        "MSOTlPn_SelectedWpId": "",
        "MSOTlPn_View": 0,
        "MSOTlPn_ShowSettings": "False",
        "MSOGallery_SelectedLibrary": "",
        "MSOGallery_FilterString": "",
        "MSOTlPn_Button": "none",
        "__EVENTTARGET": "",
        "__EVENTARGUMENT": "",
        "MSOAuthoringConsole_FormContext": "",
        "MSOAC_EditDuringWorkflow": "",
        "MSOSPWebPartManager_DisplayModeName": "Browse",
        "MSOWebPartPage_Shared": "",
        "MSOLayout_LayoutChanges": "",
        "MSOLayout_InDesignMode": "",
        "MSOSPWebPartManager_OldDisplayModeName": "Browse",
        "MSOSPWebPartManager_StartWebPartEditingName": "false",
        "__VIEWSTATE": viewstate,
        "keywords": "Search our site",
        "__CALLBACKID": "ctl00$SPWebPartManager1$g_dbb9e9c7_fe1d_46df_8789_99a6c9db4b22",
        "__CALLBACKPARAM": "startvr"
    }

# Write the appropriate headers for the property information.
item_request_headers = {
    "Host": home_site,
    "Connection": "keep-alive",
    "Content-Length": len(encoded_valuation_request),
    "Cache-Control": "max-age=0",
    "Origin": home_site,
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36",
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    "Cookie": "__utma=48409910.1174413745.1405662151.1406402487.1406407024.17; __utmb=48409910.7.10.1406407024; __utmc=48409910; __utmz=48409910.1406178827.13.3.utmcsr=ratesandvallandingpage|utmccn=landingpages|utmcmd=button",
    "Accept": "*/*",
    "Referer": valuation_url,
    "Accept-Encoding": "gzip,deflate,sdch",
    "Accept-Language": "en-US,en;q=0.8"
}

    response = requests.post(url=item_url, params=payload, data=item_request_body, headers=item_request_headers)
    print response.text

Chrome 告诉我的请求如下:

Remote Address:202.55.96.131:80
Request URL:http://www.example.com/EN/items/Pages/yourrates.aspx?vr=123456789
Request Method:POST
Status Code:200 OK

Request Headers
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:21501
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:__utma=48409910.1174413745.1405662151.1406402487.1406407024.17; __utmb=48409910.7.10.1406407024; __utmc=48409910; __utmz=48409910.1406178827.13.3.utmcsr=ratesandvallandingpage|utmccn=landingpages|utmcmd=button
Host:www.site.com
Origin:www.site.com
Referer:http://www.example.com/EN/items/Pages/yourrates.aspx?vr=123456789
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36

Query String Parameters
vr:123456789

Form Data
__SPSCEditMenu:true
MSOWebPartPage_PostbackSource:
MSOTlPn_SelectedWpId:
MSOTlPn_View:0
MSOTlPn_ShowSettings:False
MSOGallery_SelectedLibrary:
MSOGallery_FilterString:
MSOTlPn_Button:none
__EVENTTARGET:
__EVENTARGUMENT:
MSOAuthoringConsole_FormContext:
MSOAC_EditDuringWorkflow:
MSOSPWebPartManager_DisplayModeName:Browse
MSOWebPartPage_Shared:
MSOLayout_LayoutChanges:
MSOLayout_InDesignMode:
MSOSPWebPartManager_OldDisplayModeName:Browse
MSOSPWebPartManager_StartWebPartEditingName:false
__VIEWSTATE:/wEPD...(Omitted for length)
keywords:Search our site
__CALLBACKID:ctl00$SPWebPartManager1$g_dbb9e9c7_fe1d_46df_8789_99a6c9db4b22
__CALLBACKPARAM:startvr

您的请求参数太多,应该not设置内容类型、内容长度、主机、来源或连接标头;把那些留给requests to set.

您还将 url 参数加倍;要么添加vr手动将参数传递给 URLor use params,不要两者都做。

POST 主体中的某些参数很可能是由与会话绑定的 ASP 应用程序生成的。我会使用 GET 请求会话对象 the valuation_url,解析该页面中的表单以提取__CALLBACKID范围。然后,请求会话将存储服务器设置的所有 cookie 并重用它们:

item_request_headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36",
    "Accept": "*/*",
    "Accept-Encoding": "gzip,deflate,sdch",
    "Accept-Language": "en-US,en;q=0.8"
}
payload = {"vr": int(item_number[0])}

session = requests.Session(headers=item_request_headers)

# Get form page
form_response = session.get(validation_url, params=payload) 

# parse form page; BeautifulSoup could do this for example
soup = BeautifulSoup(form_response.content)
callbackid = soup.select('input[name=__CALLBACKID]')[0]['value']

item_request_body = {
    "__SPSCEditMenu": "true",
    "MSOWebPartPage_PostbackSource": "",
    "MSOTlPn_SelectedWpId": "",
    "MSOTlPn_View": 0,
    "MSOTlPn_ShowSettings": "False",
    "MSOGallery_SelectedLibrary": "",
    "MSOGallery_FilterString": "",
    "MSOTlPn_Button": "none",
    "__EVENTTARGET": "",
    "__EVENTARGUMENT": "",
    "MSOAuthoringConsole_FormContext": "",
    "MSOAC_EditDuringWorkflow": "",
    "MSOSPWebPartManager_DisplayModeName": "Browse",
    "MSOWebPartPage_Shared": "",
    "MSOLayout_LayoutChanges": "",
    "MSOLayout_InDesignMode": "",
    "MSOSPWebPartManager_OldDisplayModeName": "Browse",
    "MSOSPWebPartManager_StartWebPartEditingName": "false",
    "__VIEWSTATE": viewstate,
    "keywords": "Search our site",
    "__CALLBACKID": callbackid,
    "__CALLBACKPARAM": "startvr"
}

item_url = 'http://www.example.com/EN/items/Pages/yourrates.aspx'

response = session.post(url=item_url, params=payload, data=item_request_body,
                        headers={'Referer': form_response.url})

会话处理标头(设置用户代理并接受参数),仅在会话的 POST 上我们还添加引用标头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 请求发送 ASP.net POST 的相关文章

  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 优化视图状态

    是否有人对优化 ASP NET 应用程序的视图状态有任何想法或参考可以向我指出 我不想把它全部关闭 优化它的主要目标是提高性能 所以我不想运行一个昂贵的函数来递归地禁用某些控件的视图状态 因为该函数会减慢速度页面的加载时间会达不到目的 有任
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • Asp.net MVC 路由 - 防止通过约束路由到 XML 文件

    我正在尝试找到一种方法来阻止用户访问特定的 xml 文件 我尝试过做 routes MapRoute SiteMap SiteMap siteMap xml new new isLocal new LocalHostRouteConstra
  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 服务器不支持 C# 中的安全连接

    我在下面的代码中收到错误 服务器不支持安全连接 SmtpClient smtp new SmtpClient MailMessage mail new MailMessage mail From new MailAddress gmail
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • 在 SecureRandom 类中使用“SHA1PRNG”

    我有一个基本问题 为什么在 SecureRandom 类中使用 SHA1PRNG 如果有人解释一下 将会很有帮助 提前致谢 前任 SecureRandom getInstance SHA1PRNG Warning 我认为直接依赖这个算法是不
  • 从平面列表创建 java 层次结构树集

    我有对象 T 的列表 它有一个父属性 其中顶部对象的父属性为 null 我想将所有对象放入 TreeSet 或 TreeMap 中 顶级对象将是所有没有父对象 父对象为空 的根对象 并且它们下面将有子对象 像这样的东西 o Ra Rb Rc
  • Ninject 和 ASP.NET Web API

    在我提出问题之前 您应该知道我从此页面获取了当前的代码 http www strathweb com 2012 05 using ninject with the latest asp net web api source 我正在尝试通过使
  • 在模板函数中包装 std::format 无法使用最新的 MSVC 编译器更新进行编译

    我有点困惑为什么这段代码突然停止编译 https godbolt org z hhM5GG78x 但如果我将编译器改回 v19 31 它将编译 https godbolt org z 11j8WbEzG 这是有问题的代码 include
  • 如何使用 LINQ 从字符串中删除字符

    我有一个像这样的字符串 XQ74MNT8244A 我需要删除所有char从字符串中 所以输出会像 748244 这个怎么做 请帮我做到这一点 new string XQ74MNT8244A Where char IsDigit ToArra
  • Redis 和 Membase 之间的主要区别是什么?

    Redis 和 Membase 之间的主要区别是什么 可扩展性 Membase 提供分布式键 值存储 就像 Memcache 一样 因此无论数据集有多大 写入和读取都将始终在可预测的恒定时间内执行 另一方面 Redis 只提供主从复制 可以
  • 当页面为 HTTPS 时 URLReferrer 为 null

    我们使用 URLReferrer 和在查询字符串中传递的代码来生成在线视频 以便只有我们的付费客户才能链接到我们的视频播放页面 该系统已经运行良好一段时间了 我知道 URL 引荐来源网址可能会被欺骗 但谁会告诉他们的客户做这样的事情来访问视
  • 使用字典替换文本文件中的单词

    我正在尝试打开一个文本文件 然后通读它 用存储在字典中的字符串替换某些字符串 根据以下问题的答案如何在 Python 中编辑文本文件 我可以在进行替换之前取出字典值 但循环字典似乎更有效 该代码不会产生任何错误 但也不会进行任何替换 imp
  • Node.js 中的 New Date() 时间错误

    考虑 root ubuntu firma Exotech heart beat heart beat service date Mon Apr 24 17 07 52 CEST 2017 root ubuntu firma Exotech
  • RabbitMQ 向每个消费者发送相同的消息

    我已经实现了 RabbitMQ 网站上的示例 RabbitMQ 示例 我已将其扩展为带有一个用于发送消息的按钮的应用程序 现在我在两台不同的计算机上启动了两个消费者 当我发送消息时 第一条消息发送到computer1 然后第二条消息发送到c
  • 如何使用 Javascript 动态嵌入 Java 小程序?

    我希望能够使用按下按钮时调用的 Javascript 函数动态地将 Java 小程序插入网页中 在页面加载时加载小程序会减慢速度太多 冻结浏览器等 我使用以下代码 它在 FF 中无缝工作 但在 IE8 Safari 4 和 Chrome 中
  • 简单 CRUD 的 EJB 3 会话 Bean 设计

    我正在编写一个应用程序 其唯一目的是执行 CRUD 操作以维护数据库中的记录 一些表 实体之间存在关系 我见过的创建会话 bean 的大多数示例都涉及与许多我没有的实体交互的复杂业务逻辑 操作 由于我的应用程序非常基础 那么会话 bean
  • Spring Boot Oauth2 扩展 DefaultTokenServices

    我有一个 OAuth2 实现 对于授予类型 密码运行良好 现在我需要添加一个逻辑 如果用户之前登录 则限制相同的用户 密码组合允许再次登录 为此 我研究并认为我要创建一个扩展 DefaultTokenServices 类的新类 MyDefa
  • 覆盖 Angular 默认日期管道

    我需要覆盖默认的 Angular 7 日期管道格式 medium short fullDate等 因为我不想使用两个日期管道 默认一个和自定义一个 所以我做了以下操作 并且想知道这样做是个好主意 extend date pipe ts im
  • 如何在/proc/driver下创建proc条目?

    我想在 a 下创建一个文件 proc driver目录 我想使用像这样的宏proc root driver 或提供的其他内容 而不是显式使用 driver MODULE NAME 我用create proc entry struct pro
  • 使用 IsCancellationRequested 属性?

    有什么用CancellationToken s IsCancellationRequested财产 考虑下面的代码 static void Main string args CancellationTokenSource tokenSour
  • 二叉搜索树的平均高度

    添加 1000 个随机整数时 如何计算二叉搜索树的平均高度 平均身高是多少 这个问题让我问你是否可以在不实际生成树的情况下最终解决这个问题 我设法编写了一个应用程序 如果您将 N 个唯一数字的所有可能排列添加到一个简单实现的二叉树中 它可以
  • 从 python 列表项中删除单引号

    其实很简单的问题 我有一个 python 列表 例如 1 2 3 4 只是想知道如何去掉那些单引号 我想 1 2 3 4 目前列表中的所有值都是字符串 而您希望它们是整数 以下是两种最简单的方法 map int your list and
  • 自定义按钮框架看起来不如圆形矩形 UIButton

    我正在尝试绘制自定义按钮框架 如下所示 UIBezierPath stroke UIBezierPath bezierPathWithRoundedRect self bounds cornerRadius RECT CORNECR RAD
  • 使用 Python 请求发送 ASP.net POST

    我正在使用 Python 的请求模块抓取一个旧的 ASP net 网站 我花了 5 个多小时试图弄清楚如何模拟这个 POST 请求 但没有成功 按照我下面的方式执行此操作 我基本上会收到一条消息 没有项目与此项目引用匹配 任何帮助将不胜感激