如何查找外部站点的Javascript提交的URL
我将尽力解释这一点 我正在抓取一个网站的元素,然后以不同的格式输出。我所遇到的问题是,这个站点通过Javascript重定向来引导整个站点的用户 检查“a href”标记时,这是显示的Javascript javascript:doParamSubmit2100,document.forms['studentFilteredListForm','SSC00001MU9LI' SSC000001MU9lI针对其重定向到的每个元素进行更改 是否可以使用此Javascript找到URL,以便从外部访问HTML页面 编辑:以下是doParamSubmit和doSubmit类:如何查找外部站点的Javascript提交的URL,javascript,html,url,redirect,external,Javascript,Html,Url,Redirect,External,我将尽力解释这一点 我正在抓取一个网站的元素,然后以不同的格式输出。我所遇到的问题是,这个站点通过Javascript重定向来引导整个站点的用户 检查“a href”标记时,这是显示的Javascript javascript:doParamSubmit2100,document.forms['studentFilteredListForm','SSC00001MU9LI' SSC000001MU9lI针对其重定向到的每个元素进行更改 是否可以使用此Javascript找到URL,以便从外部访问
function doParamSubmit(event, form, parameter) {
form.userParam.value = parameter;
doSubmit(event, form);
}
function doSubmit(event, form)
{
// Make sure if something fails that the form can be resubmitted
try
{
// If this form has not been submitted yet... (except for IE)
if (allowSubmit == true && form != null && (submitted == false || isInternetExplorer6() || isInternetExplorer7()))
{
submitted = true;
form.userEvent.value = event;
// Fix for IE bug in which userEvent becomes a property array.
if (form.userEvent.length)
{
form.userEvent[0].value = event;
}
// Disable the form so the user can't accidentally resubmit the page
// (NOTE: this doesn't disable links (e.g. <a href="javascript:...">)
disableForm(form);
// If there is a populate form function, call it. If there are spell check fields on the
// page, populateForm is used to set hidden field values.
if (this.populateForm)
{
populateForm();
}
saveScrollCoordinates();
// resetSessionTimeout();
try
{
form.submit();
}
catch(e)
{
// Exceptions thrown here are only caused by canceling the submit in onbeforeunload, so ignore.
submitted = false;
}
}
if (allowSubmit == false)
{
alert(grabResource("message.pageLoading"));
}
}
catch(e)
{
submitted = false;
throw e;
}
}
我看到两种方法
您可以使用支持javascript的浏览器,例如。我不确定你是否打算只关注链接,或者获取URL以供其他用途,因此你的里程数可能会有所不同
在他们的页面/脚本中找到doParamSumit函数,并对其进行分析,以了解它是如何获取URL的——例如,您所拥有的这个函数看起来像是从表单中获取操作的?一旦你知道了这个函数是如何工作的,你就可以通过使用一些正则表达式来找到与doParamSubmit模式匹配的URL,并从那里开始,在你的抓取中利用这些信息。很难说没有看到函数本身以及其他类似的链接
不管你选择哪种方法,我都会从理解函数开始——在代码或加载的js文件中查找它——你也可以在大多数浏览器上使用javascript调试器之类的东西来帮助你找到它,看看会发生什么——这可能是非常明显的
还请记住,这可能是一个表单的帖子-在这种情况下,如果该链接需要有效的表单数据,那么您跟随该链接的结果可能不起作用
编辑我看到你发布了这个函数。它只提交第二个参数中列出的表单,即“studentFilteredListForm”。虽然我不认为你的抓取会走得太远,但如果你的抓取器允许你使用类似$'form[name=studentFilteredListForm]的东西,你仍然可以通过javascript获得URL“.attr'action”或使用您用于scraper的任何语言,即查找表单并提取操作url,记住如果没有操作,它可能会发回当前url
但是再一次。。。您可以首先手动获取表单的URL,然后查看它的位置。您可能只是得到一个有表单错误的页面:您需要阅读doParamSubmit函数,看看它能做什么。@Barmar是的,我已经读过了。我将把它添加到上面的代码中……是的,谢谢!:这是我将要开始追求的方法,但是js文件非常广泛,包括很多很多方法。我只是想先检查一下这里。类似这样的东西可能会有帮助。是的,我在控制台中执行了这个片段,看看它将如何运行,并且响应是相同的URL。更改发生在URL之后,即?navkey=academics.classes.list