プログラムで WebObjects Web サイトと対話し、応答からデータを抽出する必要があります。私がスクレイピングしている特定の WebObjects サイトは、コンポーネント アクションを使用し、セッションを Cookie (URL ではありません) に保存します。これは、すべての URL が次のようになることを意味します。
http://example.com/WOApp/WebObjects/WOApp.woa/wo/7.0.0.0.29.1.1.1
私の最初の質問は次のとおりです。
- このような URL は、ローカルおよび共有のキャッシングの機会 (REST でのキャッシング可能な制約) を完全に破壊しませんか? このような URL を使用した効果的なキャッシュは、WebObjects サーバー自体だけだと思います。
- アドレッシング機能も壊れていませんか?各リソースには固有のエンドポイントがありますが、常に変化します。さらに、(私が思うに) WebObjects は、一定期間後に「タイムアウト」するため、古すぎる URL も無効にします。ただし、これがセッションを含む URL にのみ適用されるかどうかはわかりません。
スクレイピングに関しては、Web サイトから意味のあるエンドポイントを抽出できるかどうかはわかりません。たとえば、通常の Web サイトでは、HTML を調べて POST URL を抽出し、通常の要求と応答のサイクルではなく、直接投稿することでスクレイパーで使用します。
この場合、HTML から抽出された URL はリクエストごとに動的に生成されるため、明らかに使用できませんが、セキュリティ設定がこれを許可しないように設定されていない場合、WebObjects コンポーネントに直接アクセスできることについて何かを読みました ( https:/を参照)。 /developer.apple.com/legacy/library/documentation/LegacyTechnologies/WebObjects/WebObjects_3.5/PDF/WebObjectsDevGuide.pdf、p. 53「直接リクエストの制限」)。ただし、これを行う方法、または可能かどうかは正確にはわかりません。
それが不可能な場合、どのようなアプローチが良いでしょうか? 私が考えることができる唯一のオプションは次のとおりです。
- 本格的なブラウザ クライアントを使用して Web サイト (WatiR や Selenium など) とやり取りし、応答から HTML を抽出して処理する
- 動的エンドポイントを手動で抽出するには、最初にそれらが存在するページを要求し、次にそれらが配置されている HTML 内の場所を見つけます。その後、それらが「静的」であるかのように使用します。
上記の解決策のいずれも特に優れているとは思わないため、このシナリオにどのようにアプローチするかについての意見に興味があります。