You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add embedded Iranian resolver data and two-mode local command
Embed 7,854 known local DNS resolvers and 1,919 CIDR ranges directly
in the binary so it works offline (GitHub is blocked in Iran).
- `findns local -o file.txt` exports pre-verified resolvers (default)
- `findns local -o file.txt --discover` scans Iran's full IP space
- Discovery supports --sample, --batch/--offset, --full sub-modes
- `fetch --local` now uses known resolvers instead of CIDR candidates
- Updated all docs (README, GUIDE, guide-fa, guide-telegraph)
این دستور علاوه بر resolverهای جهانی، **7,800+** آیپی resolver ایرانی/منطقهای از ir-resolvers را هم اضافه میکند. مجموعاً حدود **25,000+** resolver.
225
+
این دستور علاوه بر resolverهای جهانی، **7,800+ resolver شناختهشده ایرانی** را هم به لیست اضافه میکند. این resolverها از قبل تأیید شدهاند (منبع: ir-resolvers) و نرخ موفقیت بالایی در اسکن دارند.
226
+
227
+
> **نکته مهم:** فلگ `--local` به هیچ سرور خارجی وصل نمیشود. لیست resolverهای ایرانی **داخل خود برنامه** ذخیره شدهاند (embedded). حتی اگر GitHub فیلتر باشد، این فلگ کار میکند.
226
228
227
229
> **چرا resolverهای ایرانی مهم هستند؟** در شبکه ایران، resolverهای داخلی معمولاً سریعتر جواب میدهند و ممکن است محدودیت کمتری داشته باشند.
228
230
231
+
> **برای پیدا کردن resolverهای جدید** که در لیست شناختهشده نیستند، از دستور [`findns local --discover`](#دستور-local---resolverهای-ایرانی-داخلی) استفاده کنید.
دستور `local` دادههای ایرانی **داخل خود برنامه** را خروجی میدهد — نیازی به اینترنت ندارد. دو حالت دارد:
252
+
253
+
### حالت 1: resolverهای شناختهشده (پیشفرض — پیشنهادی)
254
+
255
+
بدون هیچ فلگ اضافه، **7,800+ resolver ایرانی از قبل تأییدشده** را خروجی میدهد (منبع: ir-resolvers). این resolverها قبلاً بررسی شدهاند و نرخ موفقیت بالایی دارند.
> **این بهترین نقطه شروع است.** چون این آیپیها واقعاً DNS resolver هستند، اکثرشان در اسکن پاس میشوند.
270
+
271
+
### حالت 2: کشف resolver جدید (--discover)
272
+
273
+
اگر میخواهید resolverهایی پیدا کنید که در لیست شناختهشده **نیستند**، از `--discover` استفاده کنید. این حالت از **1,919 رنج CIDR ایرانی** (منبع: RIPE NCC، ~10.8 میلیون آیپی) استفاده میکند.
274
+
275
+
> **مهم:** این آیپیها **resolver نیستند!** فقط کاندید هستند. اکثرشان DNS server نیستند و در اسکن فیل میشوند. این حالت برای **کشف** resolverهای جدید است.
276
+
277
+
#### نمونهگیری — Sample (پیشفرض discover)
278
+
279
+
از هر subnet تعدادی آیپی **تصادفی** انتخاب میکند. سریع است و پوشش خوبی میدهد.
280
+
281
+
</div>
282
+
283
+
```bash
284
+
# پیشفرض: 10 آیپی تصادفی از هر subnet (~19,000 آیپی)
285
+
findns local -o candidates.txt --discover
286
+
287
+
# 5 آیپی از هر subnet (سریعتر، ~9,500 آیپی)
288
+
findns local -o candidates.txt --discover --sample 5
289
+
290
+
# 50 آیپی از هر subnet (کندتر، ~95,000 آیپی)
291
+
findns local -o candidates.txt --discover --sample 50
> **نکته:** هر دسته آیپیهای **جدید و متفاوت** تولید میکند. لازم نیست نگران اسکن مجدد باشید — `--offset` تضمین میکند هیچ آیپی دو بار اسکن نشود.
327
+
328
+
#### حالت کامل — Full
329
+
330
+
تمام ~10.8 میلیون آیپی ایرانی را یکجا خروجی میدهد.
331
+
332
+
</div>
333
+
334
+
```bash
335
+
findns local -o all-iran.txt --discover --full
336
+
```
337
+
338
+
<divdir="rtl">
339
+
340
+
> **هشدار:** اسکن 10.8 میلیون آیپی **روزها** طول میکشد! پیشنهاد: به جای `--full` از `--batch 1000000` استفاده کنید.
341
+
342
+
#### نمایش رنجها (بدون تولید فایل)
343
+
344
+
فقط لیست رنجهای CIDR را ببینید. نیازی به `-o` ندارد:
345
+
346
+
</div>
347
+
348
+
```bash
349
+
findns local --list-ranges
350
+
```
351
+
352
+
<divdir="rtl">
353
+
354
+
### توضیح فلگها
355
+
356
+
| فلگ | توضیح | پیشفرض |
357
+
|-----|-------|---------|
358
+
|`-o, --output`| مسیر فایل خروجی برای لیست آیپیها. در تمام حالتها **الزامی** است به جز `--list-ranges`. | — |
359
+
|`--discover`| حالت کشف resolver جدید. بدون این فلگ، resolverهای شناختهشده خروجی داده میشوند. |`false`|
360
+
|`--sample N`|**[discover]** از هر subnet چند آیپی تصادفی انتخاب شود. عدد بزرگتر = پوشش بیشتر ولی اسکن کندتر. عدد `0` مثل `--full` عمل میکند. |`10`|
361
+
|`--full`|**[discover]** تمام ~10.8 میلیون آیپی را خروجی بده. این فلگ `--sample` را نادیده میگیرد. |`false`|
362
+
|`--batch N`|**[discover]** دقیقاً N آیپی خروجی بده. هر بار اجرا با `--offset` متفاوت، رنج جدیدی میدهد. هیچ آیپی تکراری نیست. |`0` (غیرفعال) |
363
+
|`--offset N`|**[discover]** با `--batch` استفاده میشود. از آیپی شماره N شروع کن (0-indexed). برنامه بعد از هر دسته `--offset` بعدی را نشان میدهد. |`0`|
364
+
|`--list-ranges`| فقط لیست رنجهای CIDR ایرانی را چاپ کن و خارج شو. نیازی به `-o` ندارد. |`false`|
365
+
366
+
### اولویت فلگها
367
+
368
+
- بدون `--discover` → resolverهای شناختهشده (7,800+)
369
+
- اگر `--list-ranges` داده شود → فقط رنجها چاپ میشود، بقیه فلگها نادیده گرفته میشوند
370
+
- اگر `--discover --batch` > 0 باشد → حالت دستهای فعال میشود (`--sample` و `--full` نادیده گرفته میشوند)
371
+
- اگر `--discover --full` داده شود → تمام آیپیها (`--sample` نادیده گرفته میشود)
372
+
- اگر `--discover` بدون فلگ دیگر → حالت نمونهگیری با `--sample N`
373
+
374
+
---
375
+
245
376
## 4. اسکن کامل (scan) - دستور اصلی
246
377
247
378
دستور scan مهمترین و پیشنهادیترین دستور است. تمام مراحل تست را به ترتیب اجرا میکند و فقط resolverهایی که همه مراحل را پاس کنند در خروجی نهایی میآیند.
0 commit comments