Lewati ke konten
ArchiLinks
ArchiLinksDaftar

Alat pengecek backlink website: skrip yang dapat dijadwalkan

Setiap panggilan di sini bekerja dengan curl atau klien HTTP apa pun. Ganti kuncinya, pertahankan polanya: panggil, simpan, diff.

Tim riset ArchiLinks ·

Meja kerja miniatur dengan alat Python, Node, dan Bash di sebelah tangga dan timer

Aturan dasar

Satu panggilan, satu tagihan. Setiap permintaan dibebankan satu kali berapa pun jumlah barisnya, dan satu panggilan mengembalikan hingga 1.000 baris. Paginasi mendalam berhenti pada 50.000 baris, dan per menerima nilai dari 10 hingga 5.000.

Hal ini mengubah cara Anda menulis skrip. Minta per=1000 dan halaman hanya ketika Anda membutuhkan lebih banyak, karena alat pengecek backlink website yang dibangun dengan halaman kecil melipatgandakan biaya Anda sepuluh kali lipat tanpa keuntungan. Kesalahan bersifat jelas: HTTP 401 untuk kunci yang hilang, 402 ketika kredit habis, dan setiap badan JSON membawa ok.

Sebelum Anda mengotomatisasi

Jalankan setiap skrip sekali secara manual terhadap domain kecil dan baca JSON. Nama bidang, wadah baris, dan bidang paginasi harus berasal dari respons nyata, bukan dari contoh kami, sehingga konfirmasi terlebih dahulu sebelum cron job bergantung pada bidang tersebut.

Python: simpan snapshot bertanggal

Nama bidang dalam respons ditampilkan sebagai contoh. Cetak satu respons sebelum Anda mengandalkan kunci.

python
import json, sys, datetime, requests

BASE = "https://archilinks.com/api.php"
KEY = "sk_live_..."

def snapshot(domain, action="refdomains"):
    r = requests.get(BASE, params={"action": action, "q": domain, "per": 1000, "key": KEY}, timeout=30)
    if r.status_code in (401, 402):
        sys.exit(f"API said {r.status_code}: check key or balance")
    r.raise_for_status()
    body = r.json()
    assert body.get("ok"), body
    name = f"{domain}-{action}-{datetime.date.today()}.json"
    json.dump(body, open(name, "w"), indent=1)
    print(name, body.get("_credits"))

snapshot(sys.argv[1])

Node: Domain Rating massal untuk daftar

bulk_dr menerima hingga 2.000 domain untuk 1 kredit per panggilan, melalui GET dengan parameter domains atau melalui badan POST. Pemisah koma di bawah ini adalah contoh; uji dengan dua domain terlebih dahulu. Node 18 atau yang lebih baru memiliki fetch bawaan.

javascript
const domains = ["example.com", "example.org"];
const url = new URL("https://archilinks.com/api.php");
url.search = new URLSearchParams({
  action: "bulk_dr",
  domains: domains.join(","),
  key: "sk_live_...",
});

const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(JSON.stringify(await res.json(), null, 2));

Bash dan jq: diff mingguan

Simpan snapshot dengan tanggal, lalu bandingkan dua file. Pertahankan cron mingguan atau bulanan; indeks disegarkan sekitar sebulan sekali.

bash
# crontab: 0 6 1 * *  /opt/seo/pull.sh old-shop.com
curl -s "https://archilinks.com/api.php?action=refdomains&q=$1&per=1000&key=$KEY" \
  | jq -S . > "snap-$1-$(date +%F).json"

# compare two dated files
diff <(jq -S . snap-old-shop.com-2026-09-01.json) <(jq -S . snap-old-shop.com-2026-10-01.json) | head -50

Tindakan mana untuk skrip mana

SkripTindakanBiaya per jalananOutput
Basis migrasitoppages, refdomains4 kreditDua file JSON
Pembersihan outreachbulk_dr1 kredit per panggilan, hingga 2.000 domainDR per prospek
Tumpang tindih pesaingintersect2 kreditSitus yang menautkan ke 2–10 domain
Pengawasan anchoranchors2 kreditDaftar anchor text
Pemeriksaan portofoliocompare1 kredit per panggilan, hingga 20 domainMetrik berdampingan
Mekanisme upaya ulang miniatur dengan bantalan karet, bel alarm, dan penghitung tumpukan koin

Menangani sisi-sisi ekstrem

Skrip gagal di sisi-sisi ekstrem. Rencanakan hal tersebut.

Bungkus setiap panggilan dalam upaya ulang yang menunggu dan menyerah setelah tiga percobaan, kecuali untuk 401 dan 402, yang tidak akan diperbaiki oleh upaya ulang. Catat objek _credits dari setiap respons yang diautentikasi, sehingga lonjakan pengeluaran muncul dalam log Anda sebelum muncul dalam saldo Anda, dan batasi loop dengan jumlah halaman maksimum keras.

Simpan snapshot di git atau penyimpanan objek dengan tanggal dalam nama file. Sederhana, membosankan, efektif. Untuk migrasi, pasangkan skrip ini dengan resep peta redirect dan daftar periksa migrasi. Pengguna Google Sheets dapat memanggil URL yang sama dari Apps Script dengan UrlFetchApp, dan sheet dengan pemicu bulanan adalah monitor yang sangat baik.

Pertanyaan skrip

Tiga pertanyaan muncul sebelum sebagian besar skrip diluncurkan, dan masing-masing memiliki jawaban singkat.

Bagaimana cara memeriksa berapa banyak backlink situs saya, secara gratis?

Panggil tindakan ringkasan atau statistik tanpa kunci. Keduanya gratis dan mengembalikan total dari indeks tautan kami sendiri.

Untuk daftar di balik total tersebut, Anda memerlukan kunci dan 2 kredit per panggilan.

Apa yang terjadi ketika saldo habis?

API mengembalikan HTTP 402. Skrip Anda harus berhenti dan memberi peringatan, bukan mencoba ulang dalam loop. Tambah saldo dari halaman akun dengan USDT (TRC-20) dan jalankan ulang.

Bisakah saya memanggilnya dari browser?

Ya. CORS terbuka. Namun, jangan letakkan kunci dalam kode front-end publik, karena siapa saja dapat membacanya dan menghabiskan kredit Anda.

Sabuk konveyor miniatur dengan roda gigi presisi yang memindahkan koin emas secara efisien dengan satu kunci

Paginasi tanpa membuang-buang kredit

Paginasi adalah tempat skrip secara diam-diam memakan biaya lebih dari yang seharusnya. Setiap permintaan halaman adalah panggilan terpisah dengan tagihan sendiri, sehingga loop yang meminta satu halaman terlalu banyak membayar untuk sesuatu yang tidak ada.

Baca bidang paginasi dalam satu respons nyata sebelum Anda menulis loop. Contoh di situs ini menunjukkan bentuknya, tetapi nama dan sinyal berhenti berasal dari JSON langsung.

Berhenti ketika halaman kembali lebih pendek

Halaman dengan jumlah baris lebih sedikit dari yang Anda minta biasanya adalah halaman terakhir. Biarkan loop berhenti di sana daripada meminta halaman tambahan untuk memastikan.

Jika respons membawa total atau bidang halaman berikutnya, gunakan itu sebagai sinyal berhenti. Hitung baris yang telah Anda simpan terhadapnya, sehingga ketidakcocokan muncul dalam log.

Batasi setiap loop

Tetapkan maksimum keras pada halaman dalam setiap loop. Batas melindungi saldo Anda jika nama bidang berubah dan skrip terus meminta halaman yang sama.

Pilih batas dari ukuran yang Anda harapkan, lalu naikkan secara sengaja ketika domain nyata membutuhkan lebih banyak halaman.

Tulis setiap halaman saat tiba

Simpan setiap halaman ke disk segera setelah kembali, dengan nomor halaman dalam nama file. Skrip yang berhenti pada halaman keempat puluh dapat melanjutkan dari file terakhir yang disimpan alih-alih memulai lagi dan membayar dua kali.

Simpan file dalam satu folder per domain dan per tanggal, sehingga jalankan ulang tidak pernah mencampur dua penarikan.

Menjalankan skrip secara terjadwal

Penjadwal apa pun dapat digunakan. Yang penting adalah setiap jalanan meninggalkan file di belakang, dan bahwa jalanan yang gagal memberi tahu seseorang.

Memilih host untuk pekerjaan ini

Cron cocok untuk server dengan disk yang Anda kendalikan. Pekerjaan CI cocok untuk repositori yang sudah menyimpan snapshot, sehingga riwayat hidup berdampingan dengan kode yang membacanya.

Apapun yang Anda pilih, simpan daftar domain dalam file, sehingga menambahkan domain adalah edit daripada perubahan pada skrip.

Memberi peringatan pada kegagalan, bukan pada setiap keberhasilan

Beri peringatan ketika skrip gagal, atau ketika saldo turun di bawah tingkat yang Anda pilih. Pesan keberhasilan setiap pagi melatih orang untuk mengabaikan saluran yang membawa masalah nyata.

Catat objek _credits dari setiap jalanan, seperti yang dilakukan contoh Python, dan tinjau trennya sebulan sekali.

Diff mingguan dalam lima langkah

01

Pilih tindakan

Pilih dua atau tiga panggilan yang menjawab pertanyaan Anda. Setiap panggilan memakan kredit, jadi tulis biayanya di sebelahnya.

02

Simpan respons mentah

Simpan JSON persis seperti asalnya, dengan domain dan tanggal dalam nama file. Pemformatan dapat ditunda hingga langkah diff.

03

Urutkan kunci sebelum membandingkan

Gunakan jq -S atau yang setara, sehingga urutan kunci tidak muncul sebagai perubahan. Contoh bash di atas melakukan ini.

04

Bandingkan daftar, bukan file

Gabungkan dua respons pada URL atau domain, lalu laporkan apa yang ditambahkan, dihapus, dan diubah. Diff teks mentah dari file panjang sulit ditindaklanjuti.

05

Tinjau diff dan bertindak

Kirim domain penaut yang dihapus kepada siapa pun yang mengelola outreach, dan halaman yang dihapus kepada siapa pun yang mengelola redirect.

Menguji skrip sebelum cron job bergantung padanya

Skrip yang berjalan tanpa pengawasan harus membuktikan dirinya terlebih dahulu. Gunakan satu domain kecil, baca JSON lengkap, dan baru kemudian perluas daftarnya.

Pemeriksaan kewarasan cepat adalah membandingkan total dengan panggilan ringkasan gratis untuk domain yang sama. Angka-angkanya tidak perlu cocok dengan daftar berbayar secara tepat, tetapi harus sebanding dalam skala.

Jalankan dengan dua domain

Dua domain menguji loop, nama file, dan jalur kesalahan. Satu domain dapat lulus karena keberuntungan, sementara dua menunjukkan apakah loop direset di antara domain.

Gunakan satu domain yang Anda kenal dengan baik dan satu yang tidak Anda kenal, sehingga Anda dapat menilai apakah output terlihat benar.

Jauhkan kunci dari log dan tiket

Skrip sering mencetak alamat permintaan lengkap, dan kunci berada dalam alamat tersebut sebagai parameter. Lepaskan kunci dari baris apa pun yang meninggalkan server, atau kirimkan dalam header Authorization, yang menjaganya tetap keluar dari alamat.

Jika kunci muncul dalam tiket atau repositori publik, hentikan pekerjaan terjadwal yang menggunakannya sebelum jalanan berikutnya.

Simpan catatan singkat tentang tempat kunci berada, skrip mana yang membacanya, dan host mana yang mereka panggil. Catatan itulah yang Anda butuhkan ketika seseorang bertanya siapa yang dapat menghabiskan saldo.

Memilih tindakan untuk setiap pertanyaan

Mulailah dari pertanyaan, bukan dari daftar endpoint. Migrasi perlu mengetahui URL mana yang membawa tautan, sedangkan daftar outreach membutuhkan skor domain. Satu host, dua pertanyaan. Setiap pertanyaan memakan jumlah kredit yang berbeda.

Tulis biaya di samping pertanyaan sebelum Anda menulis kode apa pun. Skrip yang berjalan mingguan melipatgandakan harga kecil menjadi lima puluh dua kali lipat, dan perkalian tersebut mudah dilupakan hingga saldo menunjukkannya.

Upaya ulang yang berhenti ketika seharusnya

Coba ulang permintaan yang gagal karena alasan sementara, seperti timeout atau kesalahan server, sejumlah kecil kali dengan jeda yang meningkat di antara percobaan. Jangan mencoba ulang 401 atau 402, karena menunggu tidak akan mengubah jawaban tersebut.

Catat setiap upaya ulang dengan tindakan dan domain, sehingga pola kegagalan muncul sebagai pola daripada sebagai keheningan.

Tetapkan jumlah upaya ulang di satu tempat, sehingga setiap panggilan dalam skrip mengikuti aturan yang sama. Loop upaya ulang yang tersebar cenderung tidak sepakat satu sama lain, dan ketidaksepakatan tersebut sulit ditemukan dalam log.