domcurl: curl + JavaScript

長い間、私は、従来のWebブラウザとして知られていることを過ぎて行くと、Webの未来がどうなっているかを考えてきました。私はこれを「ヘッドレスWeb」と呼んでいましたが、「すべてが「The Web」によって動かされたのですが、ブラウザを見たことはありませんでしたか?具体的には、フルブラウザにアクセスしても「クロム」にはアクセスできない場合は、新しいサービスを提供する大きなチャンスがあると私は信じています。

Using the browser as a service is an incredible opportunity. It allows us to take the declarative HTML and combine it with the developer defined procedural execution of JavaScript and run deep analysis on the content.

Running a browser on the server will allow us to more easily build services which parse data that is generated dynamically, it will allow us to more easily us run our own logic against the logic in a page (form fill as an example) and I believe that it will open up the ability to more effectively run actions against data embedded on the page.

それはしばらく時間がかかりましたが、私たちはそこに着いていると思います。

私はPuppeteerに魅了されています。 Puppeteerは、Chrome Dev Toolsプロトコルの上に位置するJavaScriptライブラリであり、Chromeブラウザを自動化してスクリプト化することができます。

私の日々の仕事には、Webサーバーのデバッグと保証がたくさんあります。多くの開発者と同様に、私はcurlを使ってWebサーバーに要求し、応答を確認します。これは素晴らしいユーティリティですが、今日の世界では多くの開発者がJavaScriptを使用して構築されたサイトを構築しているため、完全な応答を検査することは不可能です。

私はリソースを取得し、domcurlというページでJavaScriptを実行するためのcUrl風のユーティリティを作成することに決めました。

domcurlはPuppeteerを使う小さなNodeJSアプリケーションで、npm i domcurlコマンドを発行することでインストールできます。 curlコマンドのように、簡単なdomcurl [url]を発行してリソースを取得し、JSをページ上で実行することができます。

curlの全てを複製するわけではありませんが、以下のような特徴があります。

*取得するURLを指定します。すなわち、 domcurl [url] *レスポンスヘッダを -vで調べます。すなわち、 domcurl -v [url] * -bでクッキーを設定する、すなわちdomcurl [url] -b "test = hello;ドメイン= airhorner.com; HttpOnly;" -b "hello = world; Domain = airhorner.com; HttpOnly;"* -H引数を使用してカスタムヘッダーを追加します。 *手動で -oでSTDOUTを設定し、--stderrでSTDERRを手動で設定します

CSSとJSがダウンロードされて実行されるのを待たなければならないので、 curlのように結果をストリームすることはできませんが、かなり役に立ちます。

JavaScriptとChromeに特有の機能をいくつか追加しました。

  • Chrome Dev Toolsのトレースファイルを出力します(スクリーンのホットを含む)。 domcurl --url https://example.com --trace test.json *任意のファイルに統合する必要がある場合は、JavaScriptモジュールとしてインクルードします既存のアプリケーションの
const {domcurl} = require('domcurl');
domcurl(`https://paul.kinlan.me/`, {});

このツールはフルサービスよりもデモですが、私はヘッドレスウェブは成熟しており、人形師などのツールはウェブの継続的なパワーを実現するのに役立つと思います。我々はそれを構築する必要があります。

Paul Kinlan

Trying to make the web and developers better.

RSS Github Medium