最初に必要なのは、登録されているすべてのドメインのリストです。 長時間の検索の結果、登録後にゾーンファイルをダウンロードするためのリソースが見つかりました。 クレジットカードを追加して登録が行われ、3日間の試用後、彼らはお金を引き出し、ドメインのリストを含む既製のファイルを提供することさえしましたが、そのとき私は待ちたくなかったので(興奮しているので)、ゾーンファイルをダウンロードして簡単なパーサーを作成しましたPythonで。 何かがゆっくりと沈み始めました。たぶん手... 106,138,643登録ドメイン。 1つのhttp応答が約100kbであると仮定します。 その後、最終的に約10 TBを節約する必要があります。 絶え間ない反省と短い夢から、グローバルに考えるにはローカルで行動する必要があると思うようになりました。 .usゾーンで練習することにしました-100倍少ないドメイン(以前は100 GB)。 スクリプトがプロセスで記述されている場合、エラーと再起動は避けられません。
第二に、一般的にリソースを節約し、特に時間を節約します。 DNSリクエストはhttpよりも安価です。 すべてのドメインから遠く離れた場所にAレコードがあると確信しました(読者の間で興味があるだけの場合、これはすべてのドメインから遠く離れたサーバーを指すことを意味します)。 この問題を明確にする簡単なスクリプトを書いています(正直なところ、11回目の再起動後、スクリプトはそれほど単純ではなく、ポイントではなくなりました)。 合計で1,746,769個の.usドメインをフィードし、ゾーンでは、出力で227,051個を受け取りましたが、これらはどこにもつながりません。 もういい 結果を見ると、同じIPを持つ多くのドメインが見つかりました。 そう! 駐車場! 3時間プレイした結果、次のIPを強調表示しました(それぞれ10,000エントリ以上)。
- 108.179.223.250 89247
- 184.168.221.96 22095
- 208.87.35.103 11196
- 216.21.239.197 13574
- 97.74.42.79 14107
- 208.91.197.27 29839
- 64.202.189.170 144693
- 68.178.232.100 328476
- 68.178.232.99 12297
最終段階のドメインのリストを準備するとき、私は触れないという事実を排除しました:
ip_blacklist = { "74.220.199.6": "domins parking A", "74.220.199.8": "domins parking A", "74.220.199.9": "domins parking A", "74.117.221.143": "parking", "68.178.232.100": "GoDaddy's resale/parking shit (320k in us zone)", "64.202.189.170": "GoDaddy's redirector server, parse this shit later (150k .us)", "108.179.223.250": "zip code shit, don't need at all (90k in .us 00000.us like)", "184.168.221.96": "GoDaddy's parking server (22k .us)", "208.87.35.103": "domain parking B", "216.21.239.197": "domains.com parking", "68.178.232.99": "google's parking?!?!", "208.91.197.23": "parking", "208.91.197.24": "parking", "208.91.197.25": "parking", "208.91.197.26": "parking", "208.91.197.27": "parking", "97.74.42.79": "GoDaddys' site builder or somethink like, let's parse it later", "204.13.160.107": "parking", "64.95.64.218": "probably parking, decide later what to do", "64.95.64.194": "probably parking, decide later what to do (dead serv)", "213.186.33.5": "probably parking, decide later what to do", "216.21.239.197": "parking" }
108.179.223.250面白いサーバー。 これには、yus-zip-code.usタイプのほぼすべてのドメインが含まれていますが、統計では必要ないので、フィルタリングしました。 ウェブサイトビルダーやリダイレクタなどの奇妙なサービスを備えたGoDaddyもそこに行きました。 要約すると:
入り口-1,746,769ドメイン
「A」レコードなし-227 051
拒否(ip)-702 459
残り-817 262
.comゾーンで写真がプラスまたはマイナスの場合、落ちたものはすべて確実に上昇します。 私は800k個のクエリに対してテストコールを行っています。...神、いくつの問題がありますか... urllib2は悪い解決策です。sqlite3はさらに「悪い」解決策です。 Windowsだけがこんなにおいがしないと思った。
結論:必要な作業量を2倍に安全に削減できます。 これを行うには、脳をオンにします。 暫定的な見積もりは非常に大雑把です。 結果としてリクエストへの回答を含むファイルの重量は5 GBですが、100ではありません。確かに、「明確化するまで」リダイレクトをオフにしました。 別のドメインへの301は必要ありませんが、インデックスからフォルダーまで作業する必要がありますが、後で行います。 そして、追跡中に、結果のファイルを含むアーカイブへのリンクを提供します。 どちらかといえば、栄養士に尋ねてください。
ボーナス1-ファイル 91.222.136.77/tmp/us
ボーナス2-役に立たないページの本文で何を探すべきか
kw_blacklist = { # originally found on terrapinn.us (212.53.89.138) "The domain DOMAIN is registered by NetNames": "blank domain registration", 'pageTracker._trackPageview("/parked/dns/': "domins parking A", 'src="http://return.uk.domainnamesales.com/return_js.php': "domains parking B", 'googlesyndication.com/apps/domainpark/': "Google's parking?!?!?", 'src="http://dsparking.com/': "Parking, check ip", 'src="http://cdn.rooktemplate.com/rmgdsc/newProcess.js': "Parking, check ip", '<h2>This Domain Is Registered with Network Solutions</h2>': "No site on Network Solutions", '<title>Web Page Under Construction</title>': "No site on Network Solutions", # both means that we have to skip this site }
ボーナス3-さまざまなタイプの応答数(これらの800kのうち)
コード0-207523(タイムアウトやgo ...などのリクエスト中にエラーが発生しました)
コード200-385543
コード202-1
コード204-3
コード300-5
コード301-77447
コード302-114727
コード303-305
コード307-180
コード400-2498
コード401-1217
コード402-20
コード403-14237
コード404-10475
コード405-2
コード406-21
コード407-1
コード409-1
コード410-55
コード411-2
コード418-1
コード500-1807
コード501-1
コード502-160
コード503-965
コード504-26
コード505-4
コード508-1
コード509-3
コード600-1
コード999-1
重要な追加-サーバーログを見て驚いたが、IPアドレス127.0.0.1からの要求がポート80に送られることに非常に驚いた。 はい、いくつかのドメインは127.0.0.1を参照しています。 同様に10。*。*。*およびその他の予約済みサブネット。