IT戦記 このページをアンテナに追加 RSSフィード Twitter

2011-08-31

WebKit サーバーというものを作ってみた

みなさん

お久しぶりですヽ(´ー`)ノ夏休みの宿題終わりました?

毎日が夏休みの最終日みたいな生活してるあまちゃんです!

さてさて

今日は WebKit サーバーというものを作ってみたので、紹介してみます。

f:id:amachang:20110831092022p:image

WebKit って何?

WebKit っていうのは ChromeSafari の中に入ってるブラウザのエンジンのことです!

実はブラウザっていうのは、エンジン部分と見た目の部分(タブとかボタンとかね)に別れていて、意外と違うブラウザでもエンジン部分は同じものを使ってるってことも多いんですよ(*´ー`)

ブラウザサーバーってどういうこと?

要は、サーバーサイドでブラウザを起動して JavaScript を実行したり、 JavaScript が実行されないと読めないページから値を持ってくるのに使ったりしようという魂胆です。

今まではそういうのなかったの?

実は、今までは JavaScript を使わないと読めないようなページから値を持ってくるのに Phantom.js という便利なソフトウェアがあったんです。

PhantomJS: Headless WebKit with JavaScript API

f:id:amachang:20110831094757j:image

でも、 Phantom.js にはちょっとした問題点があって、今仕事でやってることに Phantom.js が合わなくなってしまったのです><

Phantom.js の問題点
  • 他のプログラムと連携しようと思ったときに、プロセス間で通信する手段やライブラリとして呼び出す手段がない
  • 度々起動したり終了したりするには重すぎる
  • メモリを食う
  • Xvfb を入れないといけない(これもメモリ食う)
  • 重い JavaScript を実行すると WebKit割り込みが発生するが、それを何も通知してくれないので何が起こってるのか分からなくなる。(この状態になると、プロセスを殺すしかなくなる)
  • 実行をタイムアウトする手段がない
  • confirm や prompt で止まってしまう(この状態になると、プロセスを殺すしかなくなる)

というわけで

これらの問題点をぜーんぶ解決しちゃうぜ!っていうのが今回作ったサーバーです。

コード

とりあえず、以下のところに置いておきました

webkitd/webkitd.py at master ? amachang/webkitd ? GitHub

今回作った WebKit サーバーの特徴

起動のしかた

とりあえず、デフォルトの設定でインストールしたての Ubuntu 11.04 サーバーがあったとして解説しますね。

これを順にやっていけば、たぶん使えると思います。

1. 必要なものをインストールする

apt-get で必要なものをインストールします

$ sudo apt-get install git-core python-qt4 python-daemon xvfb daemon rlwrap
(略)
Do you want to continue [Y/n]? Y

Y と答えます。ちょっと時間がかかります><

2. コードを持ってくる

gitWebKit サーバーのコードを持ってきます

$ git clone git://github.com/amachang/webkitd.git
(略)
3. Xvfb を起動する
$ sudo daemon -X "/usr/bin/Xvfb :1 -screen 0 1024x768x24" --name Xvfb
$ export DISPLAY=:1.0
4. WebKit サーバーを起動する!
$ python webkitd/webkitd.py start

エラーになりませんね?おおおお!これで起動しましたね!

ちなみに、詳細なオプションは、以下のようにすると見ることが出来ます

$ python webkitd/webkitd.py -h

使ってみる!

では、さっそく使ってみましょう

本当は、ソケットを使ってプログラムを書かなければいけないのですが、 telnet というコマンドを使うとコマンドラインからソケット通信を試すことが出来るのでそれを使います

1. 接続する

以下のように打って接続します

$ rlwrap telnet 127.0.0.1 1982

以下のような状態になったら、接続できています!

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

2. Yahooアクセスしてみる

接続できたら。

以下のように一行で書いてみてください

{ "type": "load-url", "data": { "url": "http://www.yahoo.co.jp/", "timeout": 10 } }

これは、「http://www.yahoo.co.jp/アクセスして 10 秒以内に完了しなかったらタイムアウトしてくれ」という意味です

成功すると以下のような結果が返されます

{"data": {"status": 200, "ok": true, "title": "Yahoo! JAPAN", "url": "http://www.yahoo.co.jp/", "finalUrl": "http://www.yahoo.co.jp/", "timeouted": false}}

おおおお!アクセスできてる

3. ページから値を取得してみる

次に値を取得してみましょう。

以下のように一行で書いてみてください

{ "type": "get-element-value", "data": { "xpath": "/descendant::a[1]", "attr": "href", "timeout": 10 } }

これは、「最初に出現したリンクの href を持ってきて」という意味です

成功すると以下のような結果が返されます

{"data": {"count": 1.0, "propValue": "http://www.yahoo.co.jp/_ylh=X3oDMTB0NWxnaGxsBF9TAzIwNzcyOTYyNjUEdGlkAzEyBHRtcGwDZ2Ex/r/mphp", "hasProp": true, "attrValue": "r/mphp", "found": true, "error": false, "hasAttr": true, "timeouted": false}}

ちゃんと、リンクを持ってこれましたね!

4. クリックしてみる

以下のようにすると最初のリンクに対してクリックをしたことにできます。

{ "type": "click-element", "data": { "xpath": "/descendant::a[1]", "timeout": 10 } }
5. 現在の状態を確認してみる

以下のようにするとブラウザの状態を確認できます。

{ "type": "server", "data": { "command": "status" } }

ちゃんとページが遷移していますね。

{"data": {"objectCount": 17, "selectedText": "", "objectCountMap": {"QUndoStack": 1, "QWindowsStyle": 1, "QSessionManager": 1, "QNetworkAccessManager": 1, "QGuiEventDispatcherGlib": 1, "WebKitPage": 1, "QWebFrame": 1, "QNetworkCookieJar": 1, "QApplication": 1, "QNativeSocketEngine": 2, "WebKitWorker": 1, "WebKitServer": 1, "QSocketNotifier": 3, "QTcpSocket": 1}, "title": "Yahoo! JAPANトップページをホームページに設定しよう", "url": "http://www.yahoo.co.jp/promotion/startpage/", "totalBytes": 23748, "height": 2083, "width": 950, "requestedUrl": "http://www.yahoo.co.jp/_ylh=X3oDMTB0NWxnaGxsBF9TAzIwNzcyOTYyNjUEdGlkAzEyBHRtcGwDZ2Ex/r/mphp"}}
他にも

以下のようなことが出来ます

  • スクロールの操作
  • 要素が出現するまで待つ
  • 任意の JavaScript を実行
  • 値の入力

ライブラリとしても使えます

この webkitd.py を今回直接実行しましたが、外部の python スクリプトから import して使うことも出来ます。

独自のコマンドや、 Java を有効にしたり、 Plugin を有効にしたり、セキュリティの設定を変えたりといろいろ拡張しやすいように作ったつもりです。

だいたいこんな感じです!

まだまだ、未完成な WebKit サーバーですが仕事で使いつつ、コードやテストをアップデートしていこうと思っていますので、生ぬるくウォッチしていただけたらなーと思います。

ではではーヽ(´ー`)ノ

chkanpochkanpo 2012/04/09 20:02 威哥王:http://www.chkanpo.com/goods-257.html
巨人倍増:http://www.chkanpo.com/goods-169.html
キョジンバイゾウ:http://www.chkanpo.com/goods-169.html
狼1号:http://www.chkanpo.com/goods-203.html
狼一号:http://www.chkanpo.com/goods-203.html
男宝:http://www.chkanpo.com/goods-242.html
蟻力神:http://www.chkanpo.com/goods-224.html

chkanpochkanpo 2012/04/09 20:03 狼一号:http://www.kanpouh.com/goods-55.html
男宝:http://www.kanpouh.com/goods-59.html
蟻力神:http://www.kanpouh.com/goods-52.html
紅蜘蛛:http://www.kanpouh.com/goods-351.html
VigRX:http://www.kanpouh.com/goods-96.html
超級脂肪燃焼弾:http://www.kanpouh.com/goods-191.html
SUPER FAT BURNING:http://www.kanpouh.com/goods-236.html
FAT BURNING:http://www.kanpouh.com/goods-260.html
福源春:http://www.kanpouh.com/goods-94.html
福源春カプセル:http://www.kanpouh.com/goods-58.html
V26:http://www.kanpouh.com/goods-297.html

chkanpochkanpo 2012/04/13 18:15 levitra:http://www.chkanpo.com/goods-154.html
バイアグラ:http://www.chkanpo.com/goods-248.html
レビトラ:http://www.chkanpo.com/goods-154.html
花痴:http://www.chkanpo.com/goods-317.html
RU486:http://www.chkanpo.com/goods-371.html
Cialis:http://www.chkanpo.com/goods-199.html
シアリス:http://www.chkanpo.com/goods-159.html
三便宝:http://www.chkanpo.com/goods-196.html
五便宝:http://www.chkanpo.com/goods-197.html
威哥王:http://www.chkanpo.com/goods-257.html
巨人倍増:http://www.chkanpo.com/goods-169.html
キョジンバイゾウ:http://www.chkanpo.com/goods-169.html
狼1号:http://www.chkanpo.com/goods-203.html
狼一号:http://www.chkanpo.com/goods-203.html
男宝:http://www.chkanpo.com/goods-242.html
蟻力神:http://www.chkanpo.com/goods-224.html
巨根カプセル:http://www.chkanpo.com/goods-208.html
紅蜘蛛:http://www.chkanpo.com/goods-315.html
VigRX:http://www.chkanpo.com/goods-202.html
Sex Slave:http://www.chkanpo.com/goods-305.html
超級脂肪燃焼弾:http://www.chkanpo.com/goods-60.html
SUPER FAT BURNING:http://www.chkanpo.com/goods-60.html
福源春カプセル:http://www.chkanpo.com/goods-206.html

chkanpochkanpo 2012/04/13 18:15 levitra:http://www.kanpouh.com/goods-7.html
レビトラ:http://www.kanpouh.com/goods-7.html
花痴:http://www.kanpouh.com/goods-341.html
ハナチ:http://www.kanpouh.com/goods-341.html
消渇丸:http://www.kanpouh.com/goods-123.html
Cialis:http://www.kanpouh.com/goods-13.html
シアリス:http://www.kanpouh.com/goods-13.html
さんべんぼう:http://www.kanpouh.com/goods-48.html
三便宝:http://www.kanpouh.com/goods-48.html
三便宝カプセル:http://www.kanpouh.com/goods-28.html
五便宝カプセル:http://www.kanpouh.com/goods-49.html
イカオウ:http://www.kanpouh.com/goods-2.html
威哥王:http://www.kanpouh.com/goods-2.html
巨人倍増:http://www.kanpouh.com/goods-21.html
狼1号:http://www.kanpouh.com/goods-55.html
狼一号:http://www.kanpouh.com/goods-55.html
男宝:http://www.kanpouh.com/goods-59.html
蟻力神:http://www.kanpouh.com/goods-52.html
紅蜘蛛:http://www.kanpouh.com/goods-351.html
VigRX:http://www.kanpouh.com/goods-96.html
超級脂肪燃焼弾:http://www.kanpouh.com/goods-191.html
SUPER FAT BURNING:http://www.kanpouh.com/goods-236.html

viphateken021viphateken021 2012/05/13 21:36 夢露 Monglu:http://www.superkanpo.com/product/239.html
VOV催情液:http://www.superkanpo.com/product/238.html
中絶薬RU486 (上海華聯):http://www.superkanpo.com/product/234.html
悦可亭(長効避妊薬):http://www.superkanpo.com/product/232.html
アリ王 蟻王 ANT KING:http://www.superkanpo.com/product/231.html
催情コーヒー(女性用媚薬):http://www.superkanpo.com/product/229.html
妖JI催情粉:http://www.superkanpo.com/product/228.html
sex drops:http://www.superkanpo.com/product/220.html
美人豹:http://www.superkanpo.com/product/219.html
蒼蝿水 (FLY D5原液):http://www.superkanpo.com/product/218.html
西班牙(スペイン)昆虫粉:http://www.superkanpo.com/product/217.html
紅蜘蛛(媚薬催情粉):http://www.superkanpo.com/product/212.html
マジックラブポーション(magic love dotion):http://www.superkanpo.com/product/208.html
Coquettis hwidow 黒寡婦:http://www.superkanpo.com/product/200.html
SPANISCHE FLIEGE D9:http://www.superkanpo.com/product/199.html
媚薬:http://www.superkanpo.com/jyosei/22.html
女性用媚薬:http://www.superkanpo.com/jyosei/index.html
精力剤:http://www.superkanpo.com/energy/index.html
性欲剤:http://www.superkanpo.com/energy/10.html

viphateken021viphateken021 2012/05/13 21:39 西班牙蒼蝿水口服液+遅延増大:http://www.superkanpo.net/pro/kp166.html
D10 媚薬 催情剤:http://www.superkanpo.net/pro/kp165.html
西班牙蒼蝿水:http://www.superkanpo.net/pro/kp163.html
西班牙蒼蝿水口服液:http://www.superkanpo.net/pro/kp162.html
シルバーフォックスslivlr fox 催情液:http://www.superkanpo.net/pro/kp161.html
西班牙蒼蝿粉(鉄箱催情粉)(4缶装):http://www.superkanpo.net/pro/kp175.html
紅蜘蛛赤くも催情粉:http://www.superkanpo.net/pro/kp174.html
DEMON女用興奮粉:http://www.superkanpo.net/pro/kp173.html
金蒼蝿 Gold Fly 迷情液:http://www.superkanpo.net/pro/kp178.html
BLACK WIDOW黒寡婦:http://www.superkanpo.net/pro/kp200.html
SPANISCHE FLIEGE D9:http://www.superkanpo.net/pro/kp199.html
SPANISCHE FLIEGE D6:http://www.superkanpo.net/pro/kp198.html
催情コーヒー(女性用媚薬):http://www.superkanpo.net/pro/kp229.html
西班牙催情薬:http://www.superkanpo.net/pro/kp182.html
紅蜘蛛女性催情口服液 RED SPIDER:http://www.superkanpo.net/pro/kp181.html
USA-Excitement興奮剤:http://www.superkanpo.net/pro/kp187.html
新一粒神:http://www.superkanpo.net/pro/kp194.html
蟻(アリ)王 ( ANT KING ):http://www.superkanpo.net/pro/kp191.html
SPANISCHE FLIEGE D9:http://www.superkanpo.net/pro/kp199.html
SPANISCHE FLIEGE D6:http://www.superkanpo.net/pro/kp198.html
マジックラブポーション(magic love dotion):http://www.superkanpo.net/pro/kp208.html
紅蜘蛛(媚薬催情粉):http://www.superkanpo.net/pro/kp212.html
Motivat:http://www.superkanpo.net/pro/kp222.html
SEX DROPS 小情人:http://www.superkanpo.net/pro/kp221.html
精力剤:http://www.superkanpo.net/energy/index.html
女性用媚薬:http://www.superkanpo.net/jyosei/index.html
媚薬:http://www.superkanpo.net/jyosei/Philter.html
性欲剤:http://www.superkanpo.net/energy/Sexual-desire-medicine.html

viphateken021viphateken021 2012/05/13 21:40 街頭覇王:http://www.yahoo-kanpo.com/product/Street-Fighter-testosterone.asp
威哥王三鞭粒:http://www.yahoo-kanpo.com/product/WeiGeWang-3whip-tablets.asp
午夜神:http://www.yahoo-kanpo.com/product/Golden-Power.asp
男根増長素:http://www.yahoo-kanpo.com/product/Male-Root-Masuda-Chang-Su.asp
虎力士:http://www.yahoo-kanpo.com/product/Tiger-Lux.asp
Supra PE 早漏のキラー:http://www.yahoo-kanpo.com/product/Supra-PE.asp
OOMPH TESTICLE CARE CAPSULE:http://www.yahoo-kanpo.com/product/OOMPH-TESTICLE-CARE-CAPSULE.asp
巨人倍増:http://www.yahoo-kanpo.com/product/Giants-times-Masuda-Medlar.asp
VigRx Oil「ビグレックス オイル」:http://www.yahoo-kanpo.com/product/VigRx-Oil.asp
巨根:http://www.yahoo-kanpo.com/product/Giant-Root.asp
男宝(ナンパオ)10箱セット:http://www.yahoo-kanpo.com/product/Men-Po.asp
男宝:http://www.yahoo-kanpo.com/product/Men-Po-s.asp
リドスプレー(LIDO SPRAY ):http://www.yahoo-kanpo.com/product/LIDO-SPRAY.asp
福源春 5箱セット:http://www.yahoo-kanpo.com/product/Fuyuan-Spring-5.asp
威龍:http://www.yahoo-kanpo.com/product/Fuyuan-Spring-x.asp
魔根:http://www.yahoo-kanpo.com/product/Morgans-Gold-Cordyceps.asp
華佗壮陽丹:http://www.yahoo-kanpo.com/product/HuaTuo-impotence-Dan.asp
好漢哥:http://www.yahoo-kanpo.com/product/haohange.asp
挺三天:http://www.yahoo-kanpo.com/product/Ting-3-days.asp
三體牛寶:http://www.yahoo-kanpo.com/product/Three-body-Niu-Bao.asp
龍頭老2:http://www.yahoo-kanpo.com/product/Old-faucet.asp
三便百勝軟カプセル:http://www.yahoo-kanpo.com/product/3-would-Yum-Soft.asp
北冬虫夏草:http://www.yahoo-kanpo.com/product/Cordyceps.asp
VIGEL:http://www.yahoo-kanpo.com/product/VIGEL.asp
バイジェル:http://www.yahoo-kanpo.com/product/VIGEL.asp
精力剤:http://www.yahoo-kanpo.com/Category/Energy.asp
性欲剤:http://www.yahoo-kanpo.com/Category/Sexuality-agent.asp
女性用媚薬:http://www.yahoo-kanpo.com/Category/Jyosei.asp
媚薬:http://www.yahoo-kanpo.com/Category/Mei-drug.asp

viphateken021viphateken021 2012/05/13 21:44 街頭覇王:http://www.yahoo-kanpo.com/product/Street-Fighter-testosterone.asp
威哥王三鞭粒:http://www.yahoo-kanpo.com/product/WeiGeWang-3whip-tablets.asp
午夜神:http://www.yahoo-kanpo.com/product/Golden-Power.asp
男根増長素:http://www.yahoo-kanpo.com/product/Male-Root-Masuda-Chang-Su.asp
虎力士:http://www.yahoo-kanpo.com/product/Tiger-Lux.asp
Supra PE 早漏のキラー:http://www.yahoo-kanpo.com/product/Supra-PE.asp
OOMPH TESTICLE CARE CAPSULE:http://www.yahoo-kanpo.com/product/OOMPH-TESTICLE-CARE-CAPSULE.asp
巨人倍増:http://www.yahoo-kanpo.com/product/Giants-times-Masuda-Medlar.asp
VigRx Oil「ビグレックス オイル」:http://www.yahoo-kanpo.com/product/VigRx-Oil.asp
巨根:http://www.yahoo-kanpo.com/product/Giant-Root.asp
男宝(ナンパオ)10箱セット:http://www.yahoo-kanpo.com/product/Men-Po.asp
男宝:http://www.yahoo-kanpo.com/product/Men-Po-s.asp
リドスプレー(LIDO SPRAY ):http://www.yahoo-kanpo.com/product/LIDO-SPRAY.asp
福源春 5箱セット:http://www.yahoo-kanpo.com/product/Fuyuan-Spring-5.asp
威龍:http://www.yahoo-kanpo.com/product/Fuyuan-Spring-x.asp
魔根:http://www.yahoo-kanpo.com/product/Morgans-Gold-Cordyceps.asp
華佗壮陽丹:http://www.yahoo-kanpo.com/product/HuaTuo-impotence-Dan.asp
好漢哥:http://www.yahoo-kanpo.com/product/haohange.asp
挺三天:http://www.yahoo-kanpo.com/product/Ting-3-days.asp
三體牛寶:http://www.yahoo-kanpo.com/product/Three-body-Niu-Bao.asp
龍頭老2:http://www.yahoo-kanpo.com/product/Old-faucet.asp
三便百勝軟カプセル:http://www.yahoo-kanpo.com/product/3-would-Yum-Soft.asp
北冬虫夏草:http://www.yahoo-kanpo.com/product/Cordyceps.asp
VIGEL:http://www.yahoo-kanpo.com/product/VIGEL.asp
バイジェル:http://www.yahoo-kanpo.com/product/VIGEL.asp
精力剤:http://www.yahoo-kanpo.com/Category/Energy.asp
性欲剤:http://www.yahoo-kanpo.com/Category/Sexuality-agent.asp
女性用媚薬:http://www.yahoo-kanpo.com/Category/Jyosei.asp
媚薬:http://www.yahoo-kanpo.com/Category/Mei-drug.asp

viphateken021viphateken021 2012/05/13 21:46 紅蜘蛛 II(水剤+粉剤):http://www.shopkanpo.com/product/sk171.html
西班牙蒼蝿迷情液 (gold fly):http://www.shopkanpo.com/product/sk168.html
西班牙魔力蒼蝿水(5ml * 5本/箱):http://www.shopkanpo.com/product/sk167.html
西班牙蒼蝿水口服液+遅延増大:http://www.shopkanpo.com/product/sk166.html
西班牙魔力蒼蝿水:http://www.shopkanpo.com/product/sk164.html
西班牙蒼蝿水:http://www.shopkanpo.com/product/sk163.html
西班牙蒼蝿水口服液:http://www.shopkanpo.com/product/sk162.html
シルバーフォックスslivlr fox 催情液:http://www.shopkanpo.com/product/sk161.html
紅蜘蛛(女用花痴片劑):http://www.shopkanpo.com/product/sk160.html
天然山羊の眼:http://www.shopkanpo.com/product/sk159.html
愛妻楽 (外用):http://www.shopkanpo.com/product/sk158.html
西班牙(Spanish Bag)昆虫粉 (1箱装):http://www.shopkanpo.com/product/sk157.html
紅蜘蛛赤くも催情粉:http://www.shopkanpo.com/product/sk156.html
西班牙蒼蝿粉(スペインハエ粉):http://www.shopkanpo.com/product/sk154.html
SPANISCHE FLIEGE D5:http://www.shopkanpo.com/product/sk143.html
勃動力三體牛鞭(三体牛鞭):http://www.shopkanpo.com/product/sk141.html
26味三鞭寶:http://www.shopkanpo.com/product/sk138.html
房事の神油:http://www.shopkanpo.com/product/sk134.html
超級功夫:http://www.shopkanpo.com/product/sk127.html
街頭覇王:http://www.shopkanpo.com/product/sk126.html
威哥王三鞭粒:http://www.shopkanpo.com/product/sk120.html
動情三鞭粒(イカオウ):http://www.shopkanpo.com/product/sk119.html
男根増長素:http://www.shopkanpo.com/product/sk117.html
虎力士(超濃縮片):http://www.shopkanpo.com/product/sk115.html
Supra PE 早漏のキラー:http://www.shopkanpo.com/product/sk111.html
精力剤:http://www.shopkanpo.com/energy/index.html
勃起薬:http://www.shopkanpo.com/energy/Sexuality_agent.html
女性用媚薬:http://www.shopkanpo.com/jyosei/index.html
媚薬:http://www.shopkanpo.com/jyosei/Drug_mei.html

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/amachang/20110831/1314757441