Net::HTTP - マルチページスクレイピングとCloudFlare回避に対応した汎用ベーススクレイパー
スクレイパーの概要

Net::HTTP は、ほとんどの非標準的なタスクを解決できる汎用的なスクレイパーです。あらゆるサイトから任意のコンテンツをスクレイピングするためのベースとして使用できます。リンクからページコードをダウンロードでき、マルチページスクレイピング(ページ遷移)、プロキシの自動運用をサポートし、レスポンスコードやページ内容に基づいた成功判定の実行が可能です。スクレイパーのユースケース
🔗 REG.RU ドメインオークション
フィルタリング機能を備えた、解放予定ドメインのオークションのスクレイピング
🔗 SSL証明書データ
leaderssl.ru サイトからのドメイン SSL 証明書データのスクレイピング
🔗 Booking.com リソースのスクレイピング
サイト上のアパートやホテルの検索結果の取得
🔗 商品仕様の収集
不明な数の商品仕様をスクレイピングする例
🔗 IMDB からの映画データベースのスクレイピング
各映画に関するデータを取得し、結果に記録します
🔗 HTTPS の有無の確認
サイト上の HTTPS の有無を確認するプリセット
収集されるデータ

- コンテンツ
- サーバーレスポンスコード
- サーバーレスポンスの説明
- サーバーレスポンスヘッダー
- リクエストに使用されたプロキシ
- 収集されたすべてのページの配列(Use Pages オプション使用時)
機能
- マルチページスクレイピング(ページ遷移)
- プロキシの自動運用
- コードまたはページ内容によるレスポンス成功の確認
- gzip/deflate/brotli 圧縮をサポート
- サイトの文字コードを特定し UTF-8 へ変換
- CloudFlare保護の回避
- エンジンの選択(HTTP または Chrome)
- Check content オプション – 取得したページに対して指定した正規表現を実行します。一致しない場合、別のプロキシを使用してページを再読み込みします。
- Use Pages オプション – 指定したステップ数で指定したページ数を巡回できます。変数
$pagenumには巡回中の現在のページ番号が格納されます。 - Check next page オプション – 次のページへのリンク(通常は「次へ」ボタン)を抽出する正規表現を指定する必要があります。指定された制限(0は無制限)の範囲内でページ間を遷移します。
- Page as new query オプション – 次のページへの遷移を新しいリクエストとして実行します。これにより、遷移ページ数の制限を解除できます。
利用シーン
- コンテンツのダウンロード
- 画像のダウンロード
- サーバーレスポンスコードの確認
- HTTPSの有無の確認
- リダイレクトの有無の確認
- リダイレクトURLリストの出力
- ページサイズの取得
- メタタグの収集
- ページソースコードおよび/またはヘッダーからのデータ抽出
クエリ
クエリには、以下のようにページへのリンクを指定する必要があります:
http://lenta.ru/
http://a-parser.com/pages/reviews/
結果の出力例
A-Parserは、内蔵のテンプレートエンジン Template Toolkit により柔軟な結果フォーマットをサポートしており、任意の形式やCSV、JSONなどの構造化データとして結果を出力できます。
コンテンツの出力
結果フォーマット:
$data
結果の例:
<!DOCTYPE html><html id="XenForo" lang="ru-RU" dir="LTR" class="Public NoJs uix_javascriptNeedsInit LoggedOut Sidebar Responsive pageIsLtr hasTabLinks hasSearch is-sidebarOpen hasRightSidebar is-setWidth navStyle_0 pageStyle_0 hasFlexbox" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<!-- Google Tag Manager -->
<!-- End Google Tag Manager -->
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<base href="https://a-parser.com/" />
<title>A-Parser - SEO専門家向けのスクレイパー</title>
<noscript><style>.JsOnly, .jsOnly { display: none !important; }</style></noscript>
<link rel="stylesheet" href="css.php?css=xenforo,form,public,parser_icons&style=9&dir=LTR&d=1612857138" />
<link rel="stylesheet" href="css.php?css=facebook,google,login_bar,moderator_bar,nat_public_css,node_category,node_forum,node_list,notices,panel_scroller,resource_list_mini,sidebar_share_page,thread_list_simple,twitter,uix_extendedFooter&style=9&dir=LTR&d=1612857138" />
<link rel="stylesheet" href="css.php?css=uix,uix_style&style=9&dir=LTR&d=1612857138" />
サーバーレスポンスコード
結果フォーマット:
$code
結果の例:
200
結果フォーマット [% response.Redirects.0.Status || code %] を使用すると、リクエストにリダイレクトが含まれる場合にステータス 301 を出力できます。
リクエストデータの取得
変数 $response は、サーバーのリクエストとレスポンスに関する情報を取得するのに役立ちます。
結果フォーマット:
$response.json\n
結果の例:
{
"Time": 3.414,
"connection": "keep-alive",
"Decode": "Decode from utf-8(meta charset)",
"cache-control": "max-age=3600,public",
"last-modified": "Tue, 18 May 2021 12:42:56 GMT",
"transfer-encoding": "chunked",
"date": "Thu, 27 May 2021 14:18:42 GMT",
"Status": 200,
"content-encoding": "gzip",
"Body-Length-Decoded": 1507378,
"Reason": "OK",
"Proxy": "http://51.255.55.144:25302",
"content-type": "text/html",
"Redirects": [],
"server": "nginx",
"Request-Raw": "GET / HTTP/1.1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: en-US,en;q=0.9\r\nConnection: keep-alive\r\nHost: a-parser.com\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n\r\n",
"URI": "https://a-parser.com/",
"HTTPVersion": "1.1",
"Body-Length": 299312,
"Decode-Mode": "auto-html",
"etag": "W/\"60a3b650-170032\"",
"Decode-Time": 0.003,
"IP": "remote",
"expires": "Thu, 27 May 2021 15:18:42 GMT"
}
リダイレクトの取得
クエリ:
https://google.it
結果フォーマット:
$response.Redirects.0.URI -> $response.URI
結果の例:
https://google.it/ -> https://www.google.it/
リダイレクトを含むJSON
結果フォーマット:
$response.Redirects.json
結果の例:
[{"x-powered-by":"PleskLin","connection":"keep-alive","URI":"http://a-parser.com/","location":"https://a-parser.com/","date":"Thu, 18 Feb 2021 09:16:36 GMT","HTTPVersion":"1.1","Status":301,"content-length":"162","Reason":"Moved Permanently","Proxy":"socks5://51.255.55.144:29683","content-type":"text/html","IP":"remote","server":"nginx","Request-Raw":"GET / HTTP/1.1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: en-US,en;q=0.9\r\nConnection: keep-alive\r\nHost: a-parser.com\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n\r\n"}]
サーバーレスポンスステータスの出力
結果フォーマット:
$reason
結果の例:
OK
サーバーレスポンス時間
結果フォーマット:
$response.Time
結果の例:
1.457
ページサイズの取得
例として、サイズを3つの異なるバリエーションで表示します。
結果フォーマット:
[% "data-length: " _ data.length _ "\n";
"Body-Length: " _ response.${'Body-Length'} _ "\n";
"Body-Length-Decoded: " _ response.${'Body-Length-Decoded'} _ "\n" %]
結果の例:
data-length: 70257
Body-Length: 23167
Body-Length-Decoded: 75868
結果の処理
A-Parserではスクレイピング中に直接結果を処理できます。このセクションでは、Net::HTTPスクレイパーの最も一般的なケースを紹介します。
H1-H6タグの出力
正規表現(オプション Parse custom results (正規表現を使用)) <(h\d+)[^>]+>(.+?)<\/h\d+> を追加し、「Parse result」フィールドで $pages.$i.data - Page content を選択、正規表現の隣のフィールドで修飾子 sg を選択します。結果のタイプとして配列が自動的に選択されます。「Name」フィールドに headers と入力し、次に 「$1 to」に tag を指定し、
content を指定します。全般的な結果フォーマットに $p1.headers.format('$tag - $content\n') という出力を記述します。サンプルをダウンロード
eJxtVNuO2jAQ/RVkIS2IW3loH6IVFYuK2ooSlmWfIJUsMgR3HTu1HboI8e+dcUIC
tE+Jj+ccn7nYJ+a4fbMLAxacZcH6xDL/zwI2BxcEX1erRWOrpYStEypp7Ie9/SfW
ZRk3Fgwx1nUg4jHseC4d656YO2aAMtvcOp0uwXqYmeInWKNEApYo3HEW0U4C70h4
bO03m7jTXv8cRZ1Rq9/53H7cbAYeHLEyblWI26SSLBFuDD8i6L9znhK2Bx6T2Uso
2cbEibvVyoFyLDpHUbU91SblVIJmNuyX5P7Og62HJhIbvUazZG426qFdK7/wA6w0
UndCQg1PcVWaaWK+QLsXxXbfvVNleBwLJ7TisjifXNaeXpX4nRNfaYzFXyPATo1O
EXLgBQg8XryvWdOvqbK55z4XHBbsuLTQZRatTjkaie93hAPDnTZhRn4QPzGtxlLO
4ACyDvP6T7mQVJ/xDknfSuL/Q8J/NM5VetdHHcD8MeihUvGrp/BHzYr1TCeXYkiR
CodrO9G5orZ9QPANIKtqNqewVBuojimVy9Nx/jNQMUbWLRtnNXSTxk1bbkGciZ1I
QkzAiBgukbla4SUL1USnmQTKS+VSYlssLOvxGNuyDbSoDd6TJ/4ItFXdNOa0lvb7
S2E1MwLH7yMZTLGS16eWklsu5etydr1DRLylWai+GHPXPj8YbO9cZoPBgPeKm9/f
6nRA9weHOdE4ZpjqOarehepBOV29DsHpjK37ZRdFDOVJEYhhwSz2hQXD81+VjpX2
メタタグの収集
正規表現を追加し(Parse custom results (正規表現を使用)オプション)(<meta[^>]+>)、「Parse result」で $pages.$i.data - Page content を選択、正規表現の横のフィールドで修飾子 g を選択します。結果タイプは自動的に配列が選択されます。「Name」フィールドに meta、「$1 to」に item を指定します。結果フォーマットでは $p1.meta.format('$item\n') を使用します。
サンプルをダウンロード
eJxtVO9v2jAQ/V8spBatg/XDvkRTJYqEtokRRtNPNJMscsk8/Gu2Q0FR/vfeJSGB
bp/ie37v3Z3PTsUC93u/duAheBZtK2abNYtYBjkvZWB3zHLnwdH2lq0gRNHXJFkj
3jMqFk4WULMrfTBqA74VunYRbdGiAE8SHjhLaaeAIwpuvygIfPvrIf3wMGYdnrRm
Re/QAdw5fkKw+a64IozkPY9KZCKAYmmdpj26ME5xamlk7yckmOQNcnszIvLLi74Z
Dx5P/ACJQXYuJAzwAqMu5wi7ANo9+4wn4Uj98iwTQRjNZZuS6hnKeNbib0l6bZCL
SyfAL5xRCAVoDAg8ncvdslET03mVjfZnq2FRzqWHO+ax1AXHQrL3O9iX48G42FI9
iFfM6JmUSziAHGiN/2MpZIbzneUo+tYJ/0+J//Go+/YuUx3AvTqsoXdposf4x6DK
zNIU58OQQomAsZ+bUtOkPiG4B7D9ma2IpoyDPk3n3GXHK2xBZ8gcRjazA3TVxtVY
rsGd0bkoYmzAiQzOzFIn+E5iPTfKSqC+dCkljsXDZrgeM9+NgYKhwPfieZPi6oUF
Y6T//tSWap3A6/eZClR4kpdZO8sdl/J5s7zcYcOVwuB3CNZH0yn/2L7dyc6o6avY
i6nQGRynjDwCFAZvF3ZYp/0j738F1cVTj6oaJ/bHr1sOtUcMxPCcPI6DRff1GzD1
gDE=
ページネーション巡回のバリエーション
Use pages の使用
Use pages。この機能は、あらかじめ分かっているページ数を指定してページネーションを巡回することを可能にします。
例として、商品カタログサイトのカテゴリの一つ https://www.proball.ru/catalog/myachi/ を取り上げます。上下にページネーションパネルがあります。ページ番号のアイコンをクリックすると、ブラウザのURLバーでリクエストの最後にページ番号パラメータがどのように渡されるかを確認できます:
https://www.proball.ru/catalog/myachi/?PAGEN_1=1
Use pages は一種のカウンターであり、実際には変数 $pagenum に順番に数値を代入し、指定した値ずつ増加させます。

スクリーンショットにあるように、スクレイパーのリクエストフォーマットの適切な場所に変数 $pagenum が使用されています。
Use pages 機能はすべての値を巡回してリクエストに代入し、実際にはリクエスト用のリンクを取得します。
https://www.proball.ru/catalog/myachi/?PAGEN_1=$pagenum
ここで、変数 $pagenum の代わりに、1から4までステップ1でページ番号が代入されます。
このようにして、必要な範囲のページを巡回できます。これがこの方法の制限です。ページネーションにあるページ数を事前に知っておく必要があります。複数のカテゴリを同時にスクレイピングする場合、ページ数はそれぞれ異なるのが明らかです。解決策として、想定される最大ページ数を指定することもできますが、それはあまり正確ではありません。そのため、より最適な解決策があり、それについて次に説明します。
サンプルをダウンロード
eJx1VNtu2kAQ/ZVqhJSgUAhV+2I1jSgqvSgCmtAnjKKtPTZu1rubvXAR8r931jY2
pOmTvWfPXM7M7BzAMvNk5hoNWgPB8gCq/IcAnME5SxF6oJg2qP31EqZog+DbYjEn
PMaEOW6hdwC7V0g2coNaZ7E3ymI6p1LGY1meN4w7oizfXV+vitYicsbK/B5N6Qh0
9RMsKWiKxgdhlsHK36S4I4OP7E3EmTE3IaQU6m1mMX98XCOLUYcQhuZqrTGh28v+
1W03hE9Q2y6qgGkTpQaY1mxPYPmdstxjPBNPpiF65SUEp5lLZTMpzFFqXS7TSoWh
9xrHmecxDsGhEvVgUdW3/hxJJ3y930NR/L+Szw71PpE6Z/YkQqeEb+ejr1+mj8Ob
jvcnXA7FatUkP6mMiKyG/VJYv/JzebG2VplgMNhut32l5W/GeV+7jieFobjothV4
YBtcSHKSZBxbeEKnumQdahT626P3bj8ym7MKVJn4arbZ/RLZcylFSOJ6ORmaiZY5
QRZ3tgb3RxXLWrMfCVfa/qxsIEgYN9gDQ6lOGCUSv7yhUdHMSj2rO0cNkWLE+R1u
kLe00v9nl3GaKDNKyOh7bfg6ZfaPj6KRdxqKOrrVlENLiuWdTI/anxBVU42pR3Kp
sXFQR6790otVKPxgtM0YqRY6S/Cs4OdgJEWSpbN62I5MJxa0FmZiLHPF0WcsHOc9
P+P3beNHpi6wP7QJvjQelyEorWZdgJWSmx8PVapKZzRYH5rmE/r6XA4iWgVcpoN8
z6J1NiBbQjCVNA1+c5XjQi9Hl/J6gDvFRIxUEasdFqti1ayyZuEdThZacKAHCH/M
vOJ4VZ5BGJXHUBcgGBZ/AXULzRU=
Check next page の使用
Check next page は、ページネーションの巡回を構成するためのもう一つの機能です。その特徴は、次のページに移動するために、次のページへのリンクを返す正規表現を使用することです。これはより便利で、最も頻繁に使用される方法です。しかし、https://www.proball.ru/catalog/myachi/ には適用できません。コード内に次のページへのリンクがなく、スクリプトによって生成されているためです。そのため、例として http://www.imdb.com/search/name?gender=female というサイトを取り上げます。ここにはリストの最初と最後にページネーションがあります。ソースコードを確認・分析すると、次のページに移動できるリンクの存在が確認できます:

- Next page RegEx フィールドに正規表現を記入します
- Limit (制限) フィールドに巡回するページ数を指定します

例では 4 と指定されています。制限を指定することで、スクレイパーが巡回すべきページ数を決定します。この場合、カウントは 0 から始まるため、5 ページ巡回されます。制限を 0 に指定すると、スクレイパーはページ数に関係なく、すべてのページを巡回し終えるまで動作します。これは、すべてのページからすべての結果をスクレイピングする必要がある場合に非常に便利です。
サンプルをダウンロード
eJx1VGFT2kAQ/SuZG2aUggGq4DSijnXG2qpAlY4fCM6cZANXL7n07iJYhv/e3RAS
sO0XuH3ZvX1vd2+XzHLzYgYaDFjDvNGSJdmZeWwyg8lLDxZ2wKfA6izh2oAmpxHr
gfW86+FwgHgAIU+lZfUls28JYKR6Ba1FQEEiQHuqVHCpMvuVyxRdRh+bzfHq/xEp
ZjrAtLEtY9id+i2k5I2223T2H0UcqLlxekOn47ZOHLQ7RyfOonNUdS6SRMIjPN8I
22gfHruHHWf/5np4d1t3pHgB5wsKU1XncqZVBI32J7fpHjaPW26r1XYeeMi1yMPY
FsVJaqyK7sFkWpleH7wR1mUKhurALWdj+jKFBQZ0TcJjZyK5Mac+k8JY1CQsRAdI
HRZuzWdnvm8+7Lu18yodur7foBhCa10+ejob19Yeo6fueMuJn7E8zXDNbVoQygGu
NX9DMPvv8YgwSm0KR+oji9PoGZGYHHbakVihYrPpxvtJ2DSky52ZhhDVrTUwIv5O
MFXnIMZYh34y02fELAgEJeGSecvdDLciEjSAR2y1Go8LwldKR5zwStJyMzFumEH7
exUS4lRIh+/He9VS5QN/haHCoFBIKOErtPKyVLBvQF83t1Vdu7A7DNeZqWIlmx+x
+JUVIVboi0ctwFzhQCFkIbuAwLcN6xGrZDZNSJrFfl/HMC/k0kCdGaR6xZFI8P4L
itXcKt3P24IFU/GFlLfwCrJ0y+7/nAoZ4DO9CDHoax74b5f+X3esCnnbqfBtzjVy
KJ0CdaumG+0vAElRjR4hkdJQXJBnzu/FTZNATENVNgOfawHtENwp+C44UXEopv18
bWw803iI66wfX6oINwAxjlMp67RO7svGX5i8wGSUBN8HX2YpkFax4JhVSppvD2uq
iRY4WO2i+YjOrE28RmM+n7siCp7diYoaBriezBo0m+e40FDCaQgRz6ZxgqM3VTgU
tHizqaHhMZQKFrgJAsCyWJ3CarwaFxu42NbLrT3sLVfYmJ9msPYhaeSBGNbIYCuY
11r9ASIaBUM=
前述の通り、Use pages でページ数を動的に制限することが可能です。そのためには、Use pages と Check next page を併用します。Use pages の説明で使用した例を補完し、それに Check next page 機能を追加してみましょう:

これら2つの機能はペアで次のように動作します:Use pages がページ巡回を保証し、Check next page が次のページが存在するかどうかを確認します。Check next page が次のページを見つけられなくなると、Use pages で指定された全ページ数を待たずに、そのカテゴリのスクレイピングは停止されます。これらの機能を組み合わせることで、時間とリソースを節約し、スクレイパーの動作効率を高めることができます。
サンプルをダウンロード
eJx1VNtuGjEQ/ZXKQkqiEC6V+rJqGtGo9KIIaEKfWBS5u7OLi9d2bC8EIf69M3uF
XJ52fTyXM2fGs2eeu7WbWXDgHQsWe2aKfxaw3MGMp8C6zHDrwNL1gk3AB8GP+XyG
eAwJz6Vn3T3zOwPoozdgrYjJScR4TrWOb3Vx3nCZo8ni42CwPLQeUe68zu7BFYGY
LX+CBSZNwVES7jlb0k0Kz+jwmX+IJHfuOmQpproSHrLHxxXwGGzIwtBdriwkeHve
u7y5CNkXVvnOy4Rpk6UCuLV8h2DxnfCMMCnU2jWGVHkBsWPm2nihlatLreRybals
SFHjWJAdlyzYl0U9eDDVLZ0jnSvSezgYsMPhfS2fcrC7RNuM+6McnQK+mY2+f5s8
Dq87FFHlGXufaLSCaD2BZ191t45EQl8pxK8oxjVpGV+G7FUNJ/53IhNEnqgvl41g
45Im0jPDXiFmr2R+frby3rig399utz1j9V8uZc/mHTIKQ3V20ar+wDcw1xgkERJa
eIynqk0d5Ax0W0e/6EVuc8K4ZEIdbNn9UeKpKFlptCUBBbix1RlCHgurwF1dxaJS
mcYwL3x/lz4sSLh00GUOqY45Eolf3uB4Wu61nVZNQAG1Gkl5BxuQrVkR/2suJE6x
GyXo9LNyfNtk+irGoSnvOBXO0NYih9Yo1nc6rWtfA5hGjQkhmbbQBKgyV3FxSxhQ
NEJtM0amhU4Ingh+CkZaJSKdVuNdW+Zqjqtoqm51ZiQQY5VL2aV3dd82fuQqgenQ
EnzpfFukoKGuVxTzWkv366GkaqzAwfrUNB/Rt+eyH+GrkDrtZzserUQffRGBVOM0
0LYsxgWfmC3K6zJ4NlzFgIoMD8vDstmdzYbdH23QYI/vnf1zs9KGSiILxFAbhy2g
KP8Byg3yDQ==
置換マクロの使用
置換マクロを使用すると、指定した範囲の値を順次代入することができます。

このプリセットは次のように動作します。リクエストフォーマットにテンプレートを指定します:
$query?PAGEN_1={num:1:10}
リクエスト自体に 1 before 10 までの値(範囲は任意に指定可能)の代入を追加します。これにより、必要なページ数を巡回する次のようなリクエストが得られます:
https://www.proball.ru/catalog/myachi/?PAGEN_1=1
https://www.proball.ru/catalog/myachi/?PAGEN_1=2
...
https://www.proball.ru/catalog/myachi/?PAGEN_1=10
ページネーション巡回のための置換マクロの使用は Use pages 機能に似ており、具体的な値の範囲を指定する必要があるという同様の制限があります。この方法の利点は、置換マクロを通じて数値だけでなく、単語や表現などのテキスト値も代入できることです。これにより、リクエストに必要な部分をより柔軟に挿入したり、タスクで要求される場合は別々のファイルにあるパーツからリクエスト自体を形成したりすることができます。
サンプルをダウンロード
eJxtVFtP2zAU/iuTVQkQXUsn7SUaQx2iu4i1HXRPTYW85CT1cGzPx+lFUf47x26a
AOMp8Xcu3+dzccUcx0ecW0BwyKJlxUz4ZxH7yROr8WbH+sxwi2C9fcmm4KLo22Ix
JzyFjJfSsX7F3N4ABekNWCtSIKNI6ZxrnV7rcN5wWZLL8sPFxaruIpISnS7uAEMi
Zg8/0ZJIc0BPwh1nK2/JYUcBn/i7RHLEy5jlRPVeOCgeHtbAU7Axi2M8X1vIyHo6
OL86i9ln1sQuDoR5y9IA3Fq+JzB8p7zwmBTqEVtHf/MAsVW9WrXoRNuC+1L1zGgQ
IgZZgE5P1s4ZjIbD7XY7MFb/4VIObNnzTnGsTs661Pd8AwtNSTIhoYMndGq09KgC
4K3H7GeDBDdecJoKJ7Ti8qDEy+zU/Vbiny84U5p86dcKwInVBUEOdq4B98dbLFkv
nK/m468304fRZaXKIhpFo4val78M6X4d0rAo4xKhz5DUTzhpS19bqC2WO21nxksk
vGJajaW8hQ3Izi1QfimFpO7hOKOg703g2y6z/3LU7Y2fU9Ecbi1p6JxSfavzYzke
AUxboKlHCm2hTdAwN3lpPQwoP85df8amg14IfNGDl2CiVSbyWbMiR89SLWgHZ+pa
F0aCV6xKKangCHfdLIyxKbA/dAJfB18HCpLVriZzWkv8cX+QaqygWfvYzgOhb4/q
MKG1kzofFnuerMWQYgmBXNt9eCbCBPlBQs8BO8NVClQPZ0uoaUvaR6N9W6pnT0dU
1dSRvzg/+Pg7eQ/CqDhIPWDRqH4C36ybyg==
Page as query の使用
メモリ消費を抑えるために、Page as query オプションを使用してロジックを定義できます。これを有効にすると、Check next page および Use pages 機能は、各次のページを個別の独立したリクエストとしてリクエストに代入し、メモリ内にコンテンツを蓄積しないようにします。Page as query では、リクエストレベルを上げるかどうか Increase(ツール tools.query.add の動作と同様)か、上げないか Keep を定義することもできます。

サンプルをダウンロード
eJx1VNty2jAQ/RWPJg/QEts0gUydpBnCDE0bAiQhkwfgQbHXoCJbriQDKcO/dyXM
tc0LeFd7OXv2siSaqqnqSVCgFQkGS5LZbxKQHh1DQ3Vg/piDfCcVklGpQBqrAemA
DoK7fr+H+ghimnNNKkui3zNAVzEDKVkE+MgilMdCRE1h5RnlOZoMvvj+aPWxR46Z
ThFAqnc+5EH8YZxTr+b6TumVpZGYK6fTd+pu9dJBuX5+6Szq52WnkWUcXuHtnmmv
dnbhntWd0v1d/6FdcTibgvMdwqkoO82JFAl4ta+u7575F1W3Wq05zzSmkhVuZB9i
pplI1QZhOMEgHVhow9MeyCvqTCTE10NScj/flIdkOFSfQ06VQhVnSmNhGbqcpujr
mB8rDgnGoFHETBLKSbA8zNBmCTNd8cnqY0zZccsKUFrmcBx9CpBZszbMADX+ajUa
VQh2H3upWkIm1OQ7yaquZpqbEou3ZzqDvsC3mO2rWyh1aGJgnURUg3l1YxunVHb1
Qh8UuE5ghmmX9CVlvy2HqUBb/JQMVAt7hCoNNoBRvm/ADciJlQmGyK3v49qHBDHl
CktWCLVFEUh0/MKwD1QL2S0YREZE2uDcsrEzs/Fvc8YjnPxGjE4/Csf/m3T/ibHa
lrefCsd9LhHDNoqVbrsPO69ItMUYK4/esG5u2o+yaoo8Xc9BxbZwy1nHcJYICds0
ReQiO+54BqmZkl3LcE+2qoMyDtqyp1wSJXIZmgX2ESHV1HBfDKOEMSxscPOPm2Dn
5lvJ/XRTvhoOvbW4MeivnczsamF6uZ6y0QoDhiKN2bhb3IQNmjzt47Hqpk2R4Hob
7tKc84q5FU+7EWyootVG2JFw7Ny0KQy9m+uFMARXP5/XdGSSIaqaAZtgt/azFiFD
yvnLU3v/hezGFoWJ1lngefP53GVJ9OaGIvEUUBlOvBT35AavG9J6HUNC7R6FuDRj
geOM5RoWinu7Pc7LvasbLPEMkF+qt7YxtRoL1CFpCvtPgurqL0u6AK8=
設定可能な項目
| パラメータ名 | デフォルト値 | 説明 |
|---|---|---|
| Good status | All | サーバーからのどのレスポンスを成功とみなすかを選択します。スクレイピング中にサーバーから別のレスポンスがあった場合、別のプロキシを使用してリクエストが再試行されます |
| Good code RegEx | レスポンスコードを確認するための正規表現を指定できます | |
| Ban Proxy Code RegEx | サーバーのレスポンスコードに基づいて、プロキシを一定時間(Proxy ban time)禁止できます | |
| Method | GET | リクエストメソッド |
| POST body | POSTメソッド使用時にサーバーに送信するコンテンツ。変数 $query(リクエストURL)、$query.orig(元のクエリ)、および Use Pages オプション使用時の $pagenum(ページ番号)をサポートします。 | |
| Cookies | リクエスト用のCookieを指定できます。 | |
| User agent | _最新バージョンのChromeのuser-agentが自動的に挿入されます_ | ページリクエスト時の User-Agent ヘッダー |
| Additional headers | テンプレートエンジンの機能とクエリコンストラクタの変数を使用して、任意のリクエストヘッダーを指定できます | |
| Read only headers | ☐ | ヘッダーのみを読み取ります。コンテンツを処理する必要がない場合、トラフィックを節約できます |
| Detect charset on content | ☐ | ページの内容に基づいて文字コードを認識します |
| Emulate browser headers | ☑ | ブラウザのヘッダーをエミュレートします |
| Max redirects count | 7 | スクレイパーが追跡する最大リダイレクト数 |
| Follow common redirects | ☑ | Max redirects count の制限を回避して、同一ドメイン内での http <-> https および www.domain <-> domain のリダイレクトを許可します |
| Max cookies count | 16 | 保存するCookieの最大数 |
| Engine | HTTP (Fast, JavaScript Disabled) | HTTPエンジン(高速、JavaScriptなし)または Chromeエンジン(低速、JavaScript有効)を選択できます |
| Chrome Headless | ☐ | オプションが有効な場合、ブラウザは表示されません |
| Chrome DevTools | ☐ | Chromiumのデバッグツールを使用できます |
| Chrome Log Proxy connections | ☐ | オプションが有効な場合、Chromeの接続に関する情報がログに出力されます |
| Chrome Wait Until | networkidle2 | ページが読み込まれたとみなすタイミングを定義します。値の詳細について。 |
| Use HTTP/2 transport | ☐ | HTTP/1.1の代わりにHTTP/2を使用するかどうかを定義します。HTTP/1.1を使用するとすぐに禁止されるサイトもあれば、逆にHTTP/2で動作しないサイトもあります。 |
| Try use HTTP/1.1 for Protocol error | ☑ | HTTP/2が有効でプロトコルエラーが発生した場合(つまりサイトがHTTP/2で動作しない場合)、HTTP/1.1でリクエストを再試行するようスクレイパーに指示します |
| Don't verify TLS certs | ☐ | TLS証明書の検証を無効にします |
| Randomize TLS Fingerprint | ☐ | このオプションにより、TLSフィンガープリントによるサイトの禁止を回避できます |
| Bypass CloudFlare with Chrome | ☐ | CloudFlareのチェックを自動的に回避します |
| Bypass CloudFlare with Chrome Max Pages | 20 | Chrome経由でCFを回避する際の最大ページ数 |
| Bypass CloudFlare with Chrome Headless | ☑ | オプションが有効な場合、Chrome経由でCFを回避している間、ブラウザは表示されません |