Javascript 如何获得方法签名

Javascript 如何获得方法签名,javascript,html,web-scraping,Javascript,Html,Web Scraping,我所在大学的网站上有一个搜索表单,可以访问课程列表。您选择一组标准(教员、学期等),然后按“获取课程部分”,它将显示符合给定标准的所有课程。我想得到所有的课程,所以我想知道如何用我自己的参数直接调用这个按钮。我对HTML和javascript的了解很少,但我认为我正在取得一些进展。以下是相关(我认为)来源: 所以我理解我没有传递正确的参数。我必须传递哪些参数,如何传递 如果需要任何其他来源,我很乐意发布。任何输入或澄清都是值得赞赏的,我只是通过反复试验和大量谷歌搜索未知术语才达到这一点 编辑:

我所在大学的网站上有一个搜索表单,可以访问课程列表。您选择一组标准(教员、学期等),然后按“获取课程部分”,它将显示符合给定标准的所有课程。我想得到所有的课程,所以我想知道如何用我自己的参数直接调用这个按钮。我对HTML和javascript的了解很少,但我认为我正在取得一些进展。以下是相关(我认为)来源:

所以我理解我没有传递正确的参数。我必须传递哪些参数,如何传递

如果需要任何其他来源,我很乐意发布。任何输入或澄清都是值得赞赏的,我只是通过反复试验和大量谷歌搜索未知术语才达到这一点

编辑: 以下是checksubmit()的代码


示例中的表单将
字段中给出的所有参数传递给脚本。在您的示例代码中,没有涉及JavaScript(但是
CheckSubmit()
),但我假设JavaScript用于设置这些输入字段的值

你最好的机会是提交所有的搜索结果,然后修改那些与你的搜索条件相匹配的结果


要手动发出请求,可以使用linux/unix控制台等工具

为了伪造对服务器的调用,您需要打开带有POST调用的页面。您不能从浏览器执行此操作。您可以使用服务器端代码或类似的CURL请求

CURL -X POST -d 'term_in=201209&sel_subj=dummy&sel_day=dummy&sel_schd=dummy......' https://banweb.mcgill.ca/pban1/bwskfcls.P_GetCrse 
用正确的值替换dummy,并替换。。。与其余的值一起。 这是假设站点没有检查cookie。如果是这种情况,您必须将浏览器中的cookies添加到CURL调用中。查看CURL文档,了解如何执行此操作


您还可以在具有curl库的服务器代码中执行此操作。

提交
表单时,表单中的所有字段都将提交到服务器。在表单中有一组隐藏字段,所有这些隐藏字段都作为参数在POST请求中传递给服务器

差不多

/pban1/bwskfcls.P_GetCrse?term_in=201209&sel_subj=dummy...
它们(看起来像)的服务器使用参数调用一个存储过程(可能是在剥离了将
dummy
作为值的参数之后)

错误是

许多过程匹配名称,但没有一个过程匹配签名(参数 (姓名)


因此,似乎已经为一些参数集定义了一些过程,但不是所有的。因此,可能有一个存储过程来执行搜索,将
教员
术语
作为输入,但不只是针对
教员

我明白了。谢谢你的回答,他们帮了我一些忙,但我不得不做更多的挖掘来找出所需的确切签名

我所做的是在Chrome中打开开发者工具(Ctrl+Shift+I),然后切换到网络选项卡。在那里,我可以监控所有的网络活动。然后我按下“获取课程部分”按钮。瞧,我看到帖子请求弹出了


我点击它,在“表单数据”标题下找到请求中传递的所有参数。我在url中重写了它们?p1:v1和p2:v2。。。格式化,并在我的浏览器中打开已完成的URL。成功!无需卷曲。

这就是它通常的工作方式,类型为“隐藏”的输入元素是作为参数随POST请求传递的元素?@Lanaru所有
字段(由
标记括起)都作为参数传递<代码>
只是那些在UI中看不到的内容(因此它们是隐藏的)。也可能有类似于
的其他代码。虽然它看起来很琐碎,但您是否可以发布
checkSubmit
的代码?
<script language="JavaScript" type="text/javascript">
<!-- Hide JavaScript from older browsers 
var submitcount=0;
function checkSubmit() {
if (submitcount == 0)
   {
   submitcount++;
   return true;
   }
else
   {
alert("Your changes have already been submitted.");
   return false;
   }
}
//  End script hiding -->
</script>
CURL -X POST -d 'term_in=201209&sel_subj=dummy&sel_day=dummy&sel_schd=dummy......' https://banweb.mcgill.ca/pban1/bwskfcls.P_GetCrse 
/pban1/bwskfcls.P_GetCrse?term_in=201209&sel_subj=dummy...