私はウェブサイトを記録するのに役立つDocker化された記録再生システムを構築しているので、本物ではなくローカルバージョンに対してスクレイパーを設計できます. これは、自動化されたリクエストで Web サイトを圧倒しないことを意味し、作業のために Web に接続する必要がないという追加の利点があります。
私は Java ベースの WireMock を内部で使用しました。これは、Wget を使用してサイト スクレイピングのキューから記録します。WireMock APIを使用して、記録されたマッピングからさまざまな情報を読み取ります。
ただし、マッピング応答から、ドメイン情報が記録されていないように見えることがわかりました (誤って応答ヘッダーにある場合を除く)。からの次の応答を参照してください__admin/mappings
。
{
"result": {
"ok": true,
"list": [
{
"id": "794d609f-99b9-376d-b6b8-04dab161c023",
"uuid": "794d609f-99b9-376d-b6b8-04dab161c023",
"request": {
"url": "/robots.txt",
"method": "GET"
},
"response": {
"status": 404,
"bodyFileName": "body-robots.txt-j9qqJ.txt",
"headers": {
"Server": "nginx/1.0.15",
"Date": "Wed, 04 Jan 2017 21:04:40 GMT",
"Content-Type": "text/html",
"Connection": "keep-alive"
}
}
},
{
"id": "e246fac2-f9ad-3799-b7b7-066941408b8b",
"uuid": "e246fac2-f9ad-3799-b7b7-066941408b8b",
"request": {
"url": "/about/careers/",
"method": "GET"
},
"response": {
"status": 200,
"bodyFileName": "body-about-careers-GhVqy.txt",
"headers": {
"Server": "nginx/1.0.15",
"Date": "Wed, 04 Jan 2017 21:04:35 GMT",
"Content-Type": "text/html",
"Last-Modified": "Wed, 04 Jan 2017 12:52:12 GMT",
"Connection": "keep-alive",
"X-CACHE-URI": "/about/careers/",
"Accept-Ranges": "bytes"
}
}
},
{
"id": "def378f5-a93c-333e-9663-edcd30c936d7",
"uuid": "def378f5-a93c-333e-9663-edcd30c936d7",
"request": {
"url": "/about/careers/feed/",
"method": "GET"
},
"response": {
"status": 200,
"bodyFileName": "body-careers-feed-Fd2fO.xml",
"headers": {
"Server": "nginx/1.0.15",
"Date": "Wed, 04 Jan 2017 21:04:45 GMT",
"Content-Type": "application/rss+xml; charset=UTF-8",
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"X-Powered-By": "PHP/5.3.3",
"Vary": "Cookie",
"X-Pingback": "http://www.example.com/xmlrpc.php",
"Last-Modified": "Thu, 06 Jun 2013 14:01:52 GMT",
"ETag": "\"765fc03186b121a764133349f8b716df\"",
"X-Robots-Tag": "noindex, follow",
"Link": "<http://www.example.com/?p=2680>; rel=shortlink",
"X-CACHE-URI": "null cache"
}
}
},
{
"id": "616ca6d7-6e57-4c10-8b57-f6f3dabc0930",
"uuid": "616ca6d7-6e57-4c10-8b57-f6f3dabc0930",
"request": {
"method": "ANY"
},
"response": {
"status": 200,
"proxyBaseUrl": "http://www.example.com"
},
"priority": 10
}
]
}
}
URL の唯一の明確な記録は に対する最終エントリにあります。コンソール呼び出しで URLproxyBaseUrl
を指定する必要があったことを考えると、別のドメインに対して記録すると、それぞれのドメインが失われるのではないかと心配しています。 .
つまり、再生モードでは、WireMock は 1 つのドメインからしか再生できず、別のサイトを再生するには、WireMock を再起動して別のキャッシュを指す必要があります。これは私のユースケースではうまくいかないので、この問題を回避する方法はありますか?
(私はMountebankで少し作業を行いましたが、WireMock の方が一般的に使いやすいと思いますが、喜んでそれに切り替えます。Mountebank についての私の限られた理解は、それが同じ単一ドメインの問題に苦しんでいるということです。 WireMock をドロップすることが前進する唯一の方法である場合は、堅牢なオープンソース API 駆動型レコーダ HTTP プロキシに喜んで交換します)。