0

我正在我的 shell 上尝试以下命令:

curl -b usptoCookies -L -d "patentNum=6836866&applicationNum=10007391&maintFeeAction=Get+Bibliographic+Data&maintFeeYear=04" https://ramps.uspto.gov/eram/getMaintFeesInfo.do;jsessionid=0000Nmdd1Q_YsDF90HKmb9EIIgq:11g0uehq7

相当直截了当。它试图将一些变量发布到表单中。您可以在此处查看网页: https ://ramps.uspto.gov/eram/

尝试输入专利号和申请号:6836866 和 10007391。然后点击获取书目数据按钮。

网页返回内容(“整齐”格式化的表格),但 curl 调用似乎遇到了“一些”问题。我很茫然。我在浏览器上使用了 firebug 来确认以上三个变量都是完成表单发布所需的。

这不是 https 的问题,因为我确实收到了回复。我需要帮助。

任何人?

沙希布·罗斯汉

4

2 回答 2

2

该表单中还有许多其他隐藏字段,包括“签名”。每次请求页面时,这似乎是一些唯一的字符串。这可能是用于确保您不会从他们的数据库中删除所有信息的功能。

当我清空隐藏的签名字段时,它返回了一个错误。如果您想编写一个程序来获取此信息,您可能需要做一些更复杂的事情,并首先获取带有“签名”的页面,这样您就可以将该值发布回站点以获取适当的回应。

于 2008-12-14T01:41:21.403 回答
0

我认为可能是这种情况,所以在我的一次抓取中,我让它将内容输出到可以在浏览器中打开的页面。这使我能够操纵表单元素并重新提交以查看删除某些隐藏字段是否会影响帖子。当我打开页面并删除所有隐藏字段(包括 sessionId、签名和加载时间)时,我仍然能够提交表单以获得有效响应。

认为这可能指向一些 cookie 或会话相关的问题,我启动了 Selenium(通过 Testing_Selenium 包)并尝试了相同的抓取。这个想法是,由于 Selenium 实际上使用的是真正的浏览器,因此应该消除任何会话/cookie 问题。

当 Selenium 运行以与 curl 运行相同的方式失败时,我束手无策。

我希望有人能在这个页面上看到一些奇怪或不寻常的东西,这可能会解释失败。

谢谢你的意见,你怎么看?

沙希布·R。

于 2008-12-14T17:47:09.660 回答