html - Perl,使用 Mechanize-Firefox,如何在保留在较大框架集中的同时扩展框架。

标签 html perl firefox mechanize frames

我正在抓取一个广泛使用框架的网站。在每一帧中都有一段 javascript,如下所示:

function CheckUniqName(uniq) {
if (top.name != uniq) {
top.window.location.assign("<a webpage I don't want to redirect to>");
return false;
}
return true;
}
CheckUniqName("#unique_string#")

如果我使用 $mech->follow_link(name=>'FrameName') 打开这些框架之一,那么我会立即重定向到“我不想重定向到的网页”。关闭 JavaScript 会阻止重定向(显然),但我需要“打开”JavaScript 才能完成页面上的某些操作。

我有一些关于如何使这项工作的想法,但我不知道如何实现它们:

(1) 展开框架而不是像链接一样跟随它们。如果我展开框架但保留在较大的框架集中,则 top.name 将等于 uniq 并且不会重定向(因为最顶层窗口的名称是“#unique_string#”)。怎么能做到这一点?我不明白 $mech->expand_frames 是如何工作的。

(2)禁用这些JS行。在 Mechanize 中是否可以强制程序忽略某些内容行?如果 Mechanize 会忽略“top.window.location.assign(""); 行那么它不会重定向。那有可能吗?

(3) 改变变量top.name 的值。如果我可以将 top.name 重新分配为等于 #unique_string#,那么无论窗口名称是什么,我都可以通过检查。那可能吗?我认为服务器定义了窗口名称。

来自堆栈的任何帮助将不胜感激。这让我发疯。

最佳答案

也许你可以使用greasemonkey插件在加载之前从页面中删除这段JS?

问候,

关于html - Perl,使用 Mechanize-Firefox,如何在保留在较大框架集中的同时扩展框架。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960018/

相关文章:

javascript - getBoundingClientRect() 返回错误的宽度

php - 将 perl/python/php 脚本编译成 linux 可执行文件的好编译器?

javascript - Firefox 是否会阻止来自本地文件的 ajax 请求甚至被发送出去

http - firefox - 如何清除 http/https 缓存?

javascript - JS Array.prototype.sort() 在 Firefox 中失败,在 Chrome 中有效

html - 更改 href ="tel:"颜色 :

html - 页面部分中心需要 Logo ,不包括方形空间中的左侧栏

html - div 左侧不需要的空间

linux - 连接到主机并重放输出

XSD 文件的 XML::Compile::Schema 错误