0

フレームを多用するウェブサイトをスクレイピングしています。各フレーム内には、次のような 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') を使用してこれらのフレームの 1 つを開くと、「リダイレクトしたくない Web ページ」に即座にリダイレクトされます。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# に再割り当てできれば、ウィンドウ名に関係なくチェックに合格できます。それは可能でしょうか?サーバーがウィンドウ名を定義していると思います。

スタックからの助けをいただければ幸いです。これは私を夢中にさせています。

4

1 に答える 1

0

ロードされる前に、グリースモンキー プラグインを使用して、この JS の一部をページから削除できますか?

よろしく、

于 2012-12-20T08:38:58.587 に答える