問題タブ [lwp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl LWPメモリリーク?
HTML :: TreeBuilderを使用してクロールされたWebページで抽出を行う(Perl LWPを使用して)継続的に実行されているクロールがあります。作成したHTML::TreeBuilderのすべてのインスタンスを慎重に削除しますが、クローラーのメモリフットプリントはゆっくりですが着実に増加します(クロールされるすべてのページで10〜30バイトずつ増加するのを監視しています(Valgrindを使用しています)ヒープ使用量を測定するため)。
現在、フローは次のようになっています。
- クロールページ
- 新しいツリービルダーオブジェクトを作成します
- ページの解析
- ツリービルダーオブジェクトを削除します
LWPまたはTreeBuilderのいずれかにメモリリークがあるかどうかについてのヒントはありますか?LWPにメモリリークがあったという報告をたくさん読んだことがありますが、その件についての回答はありません。
Perlv5.10.1を実行しています
ありがとう!
perl - LWP ::UserAgentHTTPSのタイムアウトを機能させる
解決
私が受け入れた回答で@limulusによって報告されたように、これはNet::HTTPS
バージョン6.00のバグでした。常に新しい.0リリースに注意してください。そのモジュールのバグのあるバージョンと修正されたバージョンの関連する違いは次のとおりです。
元の質問
関連性:接続エンドポイントの信頼性が低いため、HTTPSクライアントブロックが無期限に表示されるのは面倒です。
この実験は、自宅で簡単に設定して再生できます。必要なのは、着信クライアントをトラップするためのtarpitとPerlスクリプトの2つだけです。ターピットは、以下を使用して設定できますnetcat
。
次に、スクリプトで次のターピットを指定します。
これは何をするつもりですか?さて、NetCatによって開かれたポートに接続してから...ハングします。無期限に。少なくとも開発者の時間に関しては。10分か2時間後にタイムアウトするかもしれませんが、私はチェックしていません。指定されたタイムアウトは、LinuxでもWindowsでも有効になりません(Win32、Cygwinをチェックしていません)。
使用したバージョン:
次に、timeout
とTimeout
パラメータについて説明します。前者はLWP::UAのパラメーターの名前であり、後者はIO :: Socket :: SSLの名前であり、 LWP :: Protocol::httpsを介して使用されます。(ちなみに、なぜmetacpan HTTPSなのですか?まあ、少なくともそれはターピットではありません。)私はどういうわけかこれらのパラメーターを渡してもらいたいと思っています:)
ご存知のとおり、keep_alive
タイムアウトが機能しないこととは何の関係もありません。経験的に検証しました。:)
とにかく、深く掘り下げる前に、ここで何が起こっているのか、HTTPSでタイムアウトを機能させる方法を誰かが知っていますか?私がこれに遭遇した最初の人だとは信じがたい。
lwp - LWP::UserAgent 6.04、コンテンツの一部としての POST および \n の新しい動作
古いバージョン (5.8x?) から LWP 6.04 にアップグレードした後、永久に実行されていた分散アプリケーションで使用されている一部のコードが壊れ始めていることに気付きました。POST での \n の処理の変更にたどり着きました。
クライアントで:
サーバー上:
クライアントがサーバーを実行すると、次のようになります。
サーバー側の $good は、予想どおり qq(これはテキスト行です) になります。ただし、$bad は qq になります (これは 1 行目です\r\nこれは 2 行目です)。
LWP::UserAgent の以前の動作を利用した大量のコードを書き直して再展開することなく、この「役立つ」置換を回避する方法はありますか?
perl - LWP を使用して Web ページのコンテンツを取得する
LWP::UserAgent を使用して Web ページのコンテンツを収集しようとしていますが、何らかの理由でスクリプトを実行すると、次のような Windows ポップアップが表示されます。
Perl コマンド ライン インタープリターが動作を停止しました
次のようにコードを単純化して必要最小限に抑えたので、その理由がわかりません。
何が問題なのですか?
javascript - PerlでWWW::Scripterモジュールを使用してリファラーを設定するには?
私のクローラーの簡単なコードは次のとおりです。
を実行する前にリファラーヘッダーを設定する必要がありget
ます。または、 cookieなどの他のヘッダーも設定する必要があります。ドキュメントにはその方法がありません。ヘッダーを設定する方法が必要です。どのように?
javascript - perlのWWW::Scripterモジュールを使用してCookieを明示的にクリアする方法は?
単純なperlコードは次のとおりです。
の優れた機能の1つは、WWW::Mechanize
自動Cookieです。これは、ある時点で有効ですが、Cookieをクリアする必要がある場合もあります。どのように?
javascript - Perl で WWW::Scripter モジュールを使用しているときに、できるだけ多くのデバッグ トラフィック情報を取得するにはどうすればよいですか?
PerlWWW::Scripter
アプリケーションでモジュールを使用しており、コードが正確に何を行っているか、どのページ/画像/などをダウンロードするか、どのヘッダーとコンテンツをどのような順序で取得するかを調べようとしています。
コードは次のようなものです。
上記のデバッグ情報、各リクエストのヘッダーと内容、リクエストの順序などを取得するには、どうすればよいですか?
perl - フォームをデコード-ハッシュにurlencoded
LWPリクエストに対する応答はapplication/x-www-form-urlencoded
、オブジェクトメソッドを介してこのテキストをハッシュに変換することは可能ですか?
perl - perl LWP: 接続タイムアウトが要求タイムアウトと異なる
LWP::UserAgent を使用して、複数のサーバー上の Web サービスと通信しています。サーバーは一度に 1 つずつ接続されます。各応答が完了するまでに最大 30 分かかる場合があるため、LWP タイムアウトを 30 分に設定しました。
残念ながら、サーバーにまったく到達できない場合 (たとえば、Web サーバーがダウンしている場合) にも、同じタイムアウトが適用されます。したがって、私のアプリケーションは、実行されていないサーバーを 30 分間待機します。
2 つの別々のタイムアウトを設定することは可能ですか?
- 接続が確立されるのを待つ短いもの。
- 接続が確立されると、応答を待機するより長いもの。
perl - LWP への POST 配列: 最初のエントリのみがポストされます
ここにコードのセクションがあります。私は LWP を使用して配列全体を POST しようとしていますが、サーバーは配列の最初の行 (0 インデックス) しか受信していませんが、他の行はサーバーに送信されていません。私が間違っていることを教えてください