diff --git a/.github/workflows/rotating-domains-checker.yml b/.github/workflows/rotating-domains-checker.yml new file mode 100644 index 00000000000..46fe5efcef7 --- /dev/null +++ b/.github/workflows/rotating-domains-checker.yml @@ -0,0 +1,36 @@ +name: Rotating Domains Checker + +on: + schedule: + - cron: '0 */12 * * *' + workflow_dispatch: + inputs: + mode: + description: 'Run mode' + required: false + default: 'prod_dry' + type: choice + options: + - '' + - 'prod_live' + - 'prod_dry' + - 'test_live' + - 'test_dry' + +jobs: + check-domains: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - uses: actions/checkout@v6 + - name: Configure git user + run: | + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "github-actions[bot]" + - uses: Alex-302/RotatingDomainsChecker@master + with: + mode: ${{ github.event.inputs.mode || '' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/TurkishFilter/sections/specific.txt b/TurkishFilter/sections/specific.txt index 4e1127f8165..0fe85bc25ef 100644 --- a/TurkishFilter/sections/specific.txt +++ b/TurkishFilter/sections/specific.txt @@ -5264,9 +5264,9 @@ hdselcuksports368.top#%#//scriptlet('prevent-window-open') [$domain=/belestepe\d+\.sbs/]##div[data-isbd-main-container] > section > div.hidden-xs.text-center [$domain=/belestepe\d+\.sbs/]#%#//scriptlet('set-constant', 'config.advertisement.enabled', 'false') !#if (adguard_app_ios || adguard_ext_safari || adguard_ext_android_cb || ext_ublock) -belestepe701.sbs,belestepe702.sbs,belestepe703.sbs,belestepe704.sbs,belestepe705.sbs,belestepe706.sbs,belestepe707.sbs,belestepe708.sbs,belestepe709.sbs,belestepe710.sbs,belestepe711.sbs,belestepe712.sbs,belestepe713.sbs,belestepe714.sbs,belestepe715.sbs,belestepe716.sbs,belestepe717.sbs,belestepe718.sbs,belestepe719.sbs,belestepe720.sbs##div[data-isbd-main-container] > section > div.hidden-xs.text-center -belestepe701.sbs,belestepe702.sbs,belestepe703.sbs,belestepe704.sbs,belestepe705.sbs,belestepe706.sbs,belestepe707.sbs,belestepe708.sbs,belestepe709.sbs,belestepe710.sbs,belestepe711.sbs,belestepe712.sbs,belestepe713.sbs,belestepe714.sbs,belestepe715.sbs,belestepe716.sbs,belestepe717.sbs,belestepe718.sbs,belestepe719.sbs,belestepe720.sbs#%#//scriptlet('set-constant', 'config.advertisement.enabled', 'false') -||video.twimg.com/amplify_video/*/vid/*.mp4$domain=belestepe701.sbs|belestepe702.sbs|belestepe703.sbs|belestepe704.sbs|belestepe705.sbs|belestepe706.sbs|belestepe707.sbs|belestepe708.sbs|belestepe709.sbs|belestepe710.sbs|belestepe711.sbs|belestepe712.sbs|belestepe713.sbs|belestepe714.sbs|belestepe715.sbs|belestepe716.sbs|belestepe717.sbs|belestepe718.sbs|belestepe719.sbs|belestepe720.sbs +belestepe601.sbs,belestepe702.sbs,belestepe703.sbs,belestepe704.sbs,belestepe705.sbs,belestepe706.sbs,belestepe707.sbs,belestepe708.sbs,belestepe709.sbs,belestepe710.sbs,belestepe711.sbs,belestepe712.sbs,belestepe713.sbs,belestepe714.sbs,belestepe715.sbs,belestepe716.sbs,belestepe717.sbs,belestepe718.sbs,belestepe719.sbs,belestepe720.sbs##div[data-isbd-main-container] > section > div.hidden-xs.text-center +belestepe601.sbs,belestepe701.sbs,belestepe702.sbs,belestepe703.sbs,belestepe704.sbs,belestepe705.sbs,belestepe706.sbs,belestepe707.sbs,belestepe708.sbs,belestepe709.sbs,belestepe710.sbs,belestepe711.sbs,belestepe712.sbs,belestepe713.sbs,belestepe714.sbs,belestepe715.sbs,belestepe716.sbs,belestepe717.sbs,belestepe718.sbs,belestepe719.sbs,belestepe720.sbs#%#//scriptlet('set-constant', 'config.advertisement.enabled', 'false') +||video.twimg.com/amplify_video/*/vid/*.mp4$domain=belestepe601.sbs|belestepe701.sbs|belestepe702.sbs|belestepe703.sbs|belestepe704.sbs|belestepe705.sbs|belestepe706.sbs|belestepe707.sbs|belestepe708.sbs|belestepe709.sbs|belestepe710.sbs|belestepe711.sbs|belestepe712.sbs|belestepe713.sbs|belestepe714.sbs|belestepe715.sbs|belestepe716.sbs|belestepe717.sbs|belestepe718.sbs|belestepe719.sbs|belestepe720.sbs !#endif ! ! Frequently changed domains: izlemac*.sbs diff --git a/config.yml b/config.yml new file mode 100644 index 00000000000..d1add1d6e78 --- /dev/null +++ b/config.yml @@ -0,0 +1,70 @@ +# TrackDomains Configuration + +http: + timeout: 10000 # fallback timeout (used if specific timeouts are not provided) + retries: 2 # exponential backoff + resolveTimeout: 10000 # timeout for resolve (redirect) phase + heuristicTimeout: 10000 # timeout for heuristic phase + userAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" + +processing: + parallel: 10 # legacy/global fallback parallelism (rarely used) + resolveParallel: 20 # concurrent resolve checks (main phase) + heuristicParallel: 50 # concurrent heuristic checks (lightweight DNS+HTTP, can be high) + redirectDepth: 150 # max 3xx redirects before error (protect from infinite loops) + +dnsPreCheck: + enabled: true # enable DNS pre-check before HTTP requests (both phases) + timeout: 3000 # DNS lookup timeout (ms) + retryOnce: true # retry once on EAI_AGAIN (temporary DNS failure) + +contentProbe: + enabled: true # global toggle; per-site probe_text overrides when present + +antibot: + detectCodes: [403, 409] # potential antibot HTTP codes + detectUrlPattern: "__cf_chl_tk" # antibot URL pattern + +thresholds: + failedDaysWarning: 14 # log warning when site fails for 14+ days + +heuristic: + enabled: true # enable domain[N].tld heuristic search + maxAttempts: 150 # increase to check more domains, if there are difficulties in finding working domains + skipOnAntibot: true # skip heuristic if antibot detected + attemptParallel: 3 # max concurrent attempts per site (lower = less DNS load) + dnsParallel: 50 # max concurrent DNS lookups in batch pre-filter (lightweight, can be high) + forceHeuristicOnCodes: [403, 404, 500, 502, 503, 504] # force heuristic for these HTTP status codes + +# Global skip_text — skip domains whose response body contains these phrases (parked/expired domains) +skip_text: + - "This domain is parked" + - "router.parklogic.com" + - "Redirecting..." + - "https://patronspor.is/?s={search_term_string}" # skip redirets back to patronmarketing landing pages + - "spinny-cogs" # betist{N}tv.live + - "internal error, please contact" # Cloudflare, HTTP 500 + - "We don't use this website, yet!" # PapazSports dummy page + - "sedoParkingUrl" # Sedo Parking domains + +logging: + saveToFile: true # save logs to file + incremental: true # append to existing log file (false = overwrite) + filePath: "logs/rotating-domains-checker.log" + +git: + mode: "debug" # "prod" = commit directly to master, "debug" = create PR + branch: "master" + prBranchPrefix: "domain-rotate" + +# Filters directory settings +filtersdir: + repoPath: ".." # path to filters directory (for debugging, will be changed to ".." for production) + filterDirPattern: "TurkishFilter" # directories ending with "Filter" + filePattern: "*.txt" + +# Test filters directory settings +filtersdir_test: + repoPath: "TestFilters" # path to test filters directory + filterDirPattern: "TestFilter" # directories ending with "Filter" + filePattern: "testfilter.txt" # only this specific test file \ No newline at end of file diff --git a/watchers.yml b/watchers.yml new file mode 100644 index 00000000000..576dde86edc --- /dev/null +++ b/watchers.yml @@ -0,0 +1,10 @@ +sites: + Belestepe (belestepe*.sbs): + last_known_mirror: belestepe635.sbs + last_seen: 2026-04-21 + Turkifsaclub (turkifsaclub*.sbs): + last_known_mirror: turkifsaclub105.sbs + last_seen: 2026-04-21 + Jmanga (jmanga*.army): + last_known_mirror: jmanga.army + last_seen: 2026-04-21 \ No newline at end of file