1 poin oleh GN⁺ 2025-01-19 | 1 komentar | Bagikan ke WhatsApp
  • Server Gitea publik git.xeserv.us menjadi tidak stabil akibat permintaan AmazonBot, sehingga operator meminta tim AmazonBot untuk memasukkan domain tersebut ke daftar blokir
  • Meskipun robots.txt telah diatur dengan Disallow: / untuk semua bot, permintaan tetap masuk, sehingga situasinya bisa berujung pada penghentian operasional server Git publik itu sendiri
  • Crawler AI mempersulit pemblokiran dengan cara mengganti user-agent atau menggunakan proxy IP residensial
  • Di nginx ingress, akses diblokir dengan mengembalikan 418 untuk user-agent Amazon, tetapi permintaan tetap berlanjut dari IP lain, dan sekitar 10% tidak memiliki user-agent amazonbot
  • Pada akhirnya, server Gitea dipindahkan kembali ke balik VPN, dan dibuat reverse proxy Anubis yang melakukan pemeriksaan proof-of-work sebelum permintaan diproses

Permintaan AmazonBot dan keterbatasan robots.txt

  • Operator meminta pengelola AmazonBot untuk menambahkan git.xeserv.us ke daftar domain yang diblokir
  • Mereka juga meminta agar dihubungi jika ingin melakukan crawling terhadap server Git tersebut, sehingga biaya upgrade hardware untuk menanggung penggunaan sumber daya yang berlebihan bisa dibayarkan
  • robots.txt untuk memblokir semua bot sudah lebih dulu dipasang, tetapi itu tidak cukup untuk benar-benar menghentikan permintaan
User-agent: *
Disallow: /
  • Alasan kenapa bot crawler AI sulit diblokir juga dirangkum
    • Bot berbohong
    • Mengganti user-agent
    • Menggunakan alamat IP residensial sebagai proxy
    • Menggunakan cara-cara lain juga

Pemblokiran di nginx ingress dan perilisan Anubis

  • Pada 2025-01-17 17:50 UTC, pemblokiran berdasarkan user-agent ditambahkan melalui konfigurasi nginx ingress
nginx.ingress.kubernetes.io/configuration-snippet: |
  if ($http_user_agent ~* "(Amazon)" ){
    return 418;
  }
  • Bahkan setelah konfigurasi ini diterapkan, bot tetap terus mengirim permintaan dari IP yang berbeda-beda setiap saat, dan sekitar 10% dari permintaan tidak memiliki user-agent amazonbot
  • Pada 2025-01-18 19:00 UTC, server Gitea dipindahkan kembali ke balik VPN
  • Setelah itu, mulai dibuat reverse proxy yang memeriksa proof-of-work sebelum mengizinkan permintaan mencapai server Gitea
  • Pada 2025-01-18 23:50 UTC, proxy tersebut sudah dapat dilihat di https://git.xeserv.us/ dengan nama Anubis
  • Per 2025-03-26 14:27 UTC, Anubis telah menjadi proyek mandiri dengan situs dokumentasi

1 komentar

 
GN⁺ 2025-01-19
Pendapat Hacker News
  • Sekarang saatnya mengirim surat atas nama pengacara. Jika melihat pedoman penuntutan Computer Fraud and Abuse Act, Departemen Kehakiman AS umumnya tidak menganggap akses ke server publik yang bukan serangan jelas sebagai “akses tanpa izin”, tetapi disebutkan bahwa setelah pihak yang berwenang mengirim permintaan tertulis yang jelas untuk berhenti, dan terdakwa menerima serta memahaminya, sejak saat itu akses tersebut dianggap tanpa izin
    Jadi minta pengacara menulis surat “cease and desist yang jelas”, lalu kirimkan ke Amazon lewat surat tercatat atau process server sesuai saran pengacara. Mungkin sebaiknya lakukan keduanya dan kirim email juga
    Setelah itu lihat apakah Amazon berhenti; kalau tidak, bisa mengajukan pengaduan pidana. Dengan begitu Amazon juga akan mulai memperhatikan
    https://www.justice.gov/jm/jm-9-48000-computer-fraud

    • “Melihat apakah Amazon berhenti” hanya masuk akal jika permintaan itu benar-benar berasal dari Amazon. Dari detail tulisan seperti user agent yang berganti-ganti, IP residensial, dan perilaku yang tampaknya tidak menafsirkan robots.txt, kemungkinannya terlihat kecil
      Bot Amazon seharusnya datang dari rentang IP Amazon yang diketahui dan mematuhi robots.txt. Seorang engineer Amazon juga mengonfirmasinya di komentar lain: https://news.ycombinator.com/item?id=42751729
      Jika satu-satunya yang cocok dengan Amazon hanyalah string user agent “AmazonBot”, sementara rentang IP dan perilakunya tidak cocok, mengirim surat pengacara ke Amazon kurang lebih sama seperti membakar uang
    • Jujur saja, fakta bahwa ini sudah naik ke halaman depan Hacker News saja rasanya cukup memalukan, sehingga mungkin seseorang dari departemen akal sehat akan membaca dan membalas email sopan saya yang meminta “tolong jangan scrape server git saya”. Kalau belum ada jawaban sampai Selasa depan, saya akan meminta pengacara menulis surat permintaan penghentian resmi
    • Apakah sekarang kita butuh undang-undang yang menyatakan “robot harus mematuhi robots.txt”?
    • Saya penasaran apa sebenarnya yang dimaksud dengan process server di sini
  • Saya suka solusi di komentar ini: https://news.ycombinator.com/item?id=42727510
    Caranya adalah menaruh tautan di suatu tempat di situs yang tidak mungkin dikunjungi manusia, melarangnya di robots.txt, lalu memblokir IP mana pun yang mengunjungi tautan itu selama 24 jam. Karena crawler OpenAI disebut secara khusus mengabaikan wildcard, tautannya ditempatkan di bawah wildcard semacam itu

    • Saya pernah berurusan dengan aktivitas bot yang memakai rentang alamat luas, dan pernah memakai pendekatan serupa: jika berdasarkan kondisi tertentu terkonfirmasi sebagai bot, IP itu diblokir 24 jam
      Namun karena IP terkait terlalu banyak, dampaknya terhadap trafik hampir tidak ada
      Saya menyarankan untuk melihat header yang diterima dengan sangat rinci. varnishlog cukup bagus untuk hal seperti ini, dan kalau diperhatikan cukup lama, Anda bisa menemukan ciri yang sama pada semua request. Misalnya kombinasi aneh antara bahasa yang dilaporkan dan lokasi geografis, atau versi browser lama yang sama
    • Web crawler benar-benar menjengkelkan. Sekitar 8 tahun lalu di tempat saya bekerja, server gambar kendaraan pernah tumbang. Crawler bermasalah itu mengakses tautan gambar kendaraan yang kami miliki karena sifat bisnis kami, dan ketika gambar-gambar itu sama sekali tidak ada, kombinasi kondisi terburuk itu pada dasarnya membuat server gambar laporan status terkena DoS
      Lebih parah lagi, ada bug di error handler sehingga ketika kondisi ini terjadi proses server direstart, dan dalam prosesnya implementasi cache yang “cukup lumayan untuk standar .NET 2.0” ikut terinvalidasi
      Saya ingat sejak itu kami mulai menambahkan teknik canary sebagai pengaman. Beberapa canary sederhana tetap lebih murah daripada menambah web server lain. Tentu saja masalah cache juga kami perbaiki, dan kami menambahkan mekanisme agar layanan itu “berteriak” jika menerima terlalu banyak request buruk
    • Saat membuat crawler untuk mesin pencari saya sendiri, saya menyadari hampir tidak ada library crawler yang benar-benar sesuai dengan dunia nyata. Akhirnya saya harus bersusah payah membuat implementasi sendiri yang bahkan mematuhi file robots Amazon dan Google yang cukup rumit serta bertingkat, termasuk masa pendinginan yang diminta
      Tapi ternyata crawler perusahaan-perusahaan itu sendiri tidak bisa mem-parse manifes yang mereka buat
  • Kami juga melihat perilaku yang sama dari semua bot AI·SEO, jadi saya merekomendasikannya. Mereka hanya mematuhi robots.txt sebatas seadanya dan sulit diblokir. Saat crawling, mereka datang seperti spam, menaikkan beban secara besar-besaran, dan menjatuhkan banyak server pelanggan
    Jika crawler AI ingin mengakses, mereka harus bersikap baik atau membayar. Kalau tidak, hasilnya hampir pasti pemblokiran secara luas

    • Solusinya adalah tarpit global. Bahkan tanpa mempertimbangkan crawler AI pun ini masuk akal. Dulu ketika saya harus mengimplementasikannya, saya mem-parse access log secara semimanual lalu memasang -j TARPIT di iptables untuk IP yang melakukan request ke /api rata-rata lebih dari X kali per detik
      Saya tidak begitu tahu bagaimana mengimplementasikannya di cloud. Saya belum pernah membutuhkannya di sana
      https://gist.github.com/flaviovs/103a0dbf62c67ff371ff75fc62f...
    • Saya tidak tahu bagaimana caranya melakukan “pemblokiran yang hampir universal”. Bukankah justru sulitnya itu yang menjadi masalah? Kalau memang bisa, pasti sudah dilakukan sejak dulu
    • Saya penasaran apa maksudnya mematuhi robots.txt “sebatas seadanya”. Bukankah ini bersifat biner? Maksudnya mereka mematuhi sebagian directive dan mengabaikan directive lainnya?
    • Tidak adakah cara agar situs web bisa menjual data itu sebagai file zip besar kepada bot AI? Rasanya itu lebih baik daripada terus-menerus terkena DDoS
      Atau setidaknya, demi sopan santun, mereka scrape pada malam hari atau saat jam tidak sibuk
    • Apa gunanya memblokir? Pada saat itu, mereka mungkin sudah scrape semua kontennya
  • Saya tidak akan berasumsi ini benar-benar Amazon. Penulis melihat permintaan yang berganti-ganti IP residensial dan juga mengubah string user-agent
    Berpura-pura menjadi crawler perusahaan besar adalah teknik yang umum dipakai orang yang tidak ingin terlihat. Fakta bahwa permintaan datang dari IP residensial adalah sinyal peringatan besar bahwa ada hal lain yang sedang terjadi

    • Saya bekerja di Amazon, tetapi tidak menangani web crawling secara langsung
      Berdasarkan informasi yang bisa saya cek secara internal, sangat kecil kemungkinan ini benar-benar Amazon. Amazonbot seharusnya mematuhi robots.txt dan selalu datang dari alamat IP milik Amazon. Prosedur verifikasinya ada di sini: https://developer.amazon.com/en/amazonbot
      Saya sudah meneruskannya secara internal untuk memastikan apakah ada tim internal aneh yang tidak saya ketahui melakukan hal seperti ini, tetapi sebaiknya penulis memperlakukan trafik ini sebagai berbahaya dan mengaku-ngaku memakai user-agent palsu
    • Hal seperti ini ditawarkan secara komersial sebagai layanan[1]. Karena library yang disertakan di suatu tempat, ratusan juta jaringan dipakai seperti backdoor dan berubah menjadi crawler/scraper, lalu dengan klausul umum di suatu tempat dalam syarat layanan, mereka membuat penggunaan pengguna sebagai kaki tangan aktivitas di antara legal dan ilegal tampak sah
      [1] https://brightdata.com/proxy-types/residential-proxies
    • Sulit memastikan bahwa perusahaan yang melakukan crawling agresif akhir-akhir ini tidak memakai jaringan proxy
  • Baru-baru ini saya mengalami masalah yang sama. Instance Forgejo saya mulai memakai 100% CPU server rumahan, karena Claude serta teman-teman AI dari Meta dan Google menghantam tautan yang pada dasarnya tak terbatas dengan kecepatan tinggi
    robots.txt dan daftar blokir berbasis user-agent di Caddy sedikit menguranginya, tetapi saya tidak tahu itu akan bertahan berapa lama
    Ke mana perginya etika scraping?

    • Karena uang. Perusahaan AI punya insentif finansial untuk mengambil data sebanyak mungkin, secepat mungkin, dari mana pun bisa mendapatkannya. Saat ini mereka juga punya terlalu banyak uang tunai untuk dibakar, jadi tidak terlalu perlu melakukannya secara efisien
    • Ketika berbagai perusahaan menerima sinyal bahwa, setidaknya untuk sementara, jendela Overton tentang apa yang boleh dimakan AI sangat lebar, mereka akan berusaha mengambil sebanyak mungkin sebelum regulasi mencoba memperketatnya
      Risiko yang lebih besar adalah salah satu dari perusahaan ini, bahkan yang mengaku “Open”, menjadi sebesar itu sampai dari sudut pandang ekonomi atau keamanan nasional dianggap “terlalu besar untuk dibiarkan gagal”
    • Ini sama seperti kesopanan dalam semua konteks lain. Kesopanan hanya ada dalam konteks ketika mengabaikannya tidak menghasilkan uang. Begitu premis itu hilang, kesopanan langsung dibuang
    • Ada yang bisa membagikan robots.txt atau daftar user-agent yang bagus untuk memblokir crawler AI?
    • Kapan orang terakhir di Hacker News akan sadar bahwa Meta, OpenAI, dan semua raksasa teknologi pada akhirnya akan merugikan kita semua demi uang cepat?
      Facebook terkenal pernah mempermudah scraping daftar teman dari MySpace, lalu setelah mereka membesar, mereka melarang perilaku yang sama di situs mereka sendiri
      Tolong sadarlah
  • Apakah yakin ini bukan DDoS yang menyamar sebagai Amazon?
    Fakta bahwa permintaan datang dari IP residensial benar-benar mencurigakan
    Motif DDoS seperti ini bisa saja menargetkan Amazon dengan menjatuhkan situs-situs kecil dan membuatnya terlihat seperti tanggung jawab Amazon
    Kalau memang Amazon sungguhan, titik awalnya adalah memblokir semua rentang IP yang mereka publikasikan. Namun sepertinya permintaan juga datang dari luar rentang itu

    • Perlu melihat situs web seperti grass dot io. Saya tidak akan menautkannya langsung karena tidak ingin memberi mereka trafik
      Layanan seperti ini membayar bandwidth pengguna lalu menjualnya kembali ke pihak ketiga, sehingga banyak trafik bot tampak berasal dari IP residensial
  • Situs saya, Pinboard, juga sedang dihajar oleh sesuatu yang diduga crawler AI. Musim panas ini awalnya dari IP Tiongkok dan Singapura, tetapi sekarang saya bahkan tidak bisa memblokir rentang IP dan harus bergantung pada CAPTCHA
    Tingkat trafiknya cukup untuk langsung mematikan situs, padahal saya tidak punya teks menarik untuk dilatih, hanya tautan
    Saya penasaran bagaimana penulis asli mengetahui bahwa crawler Amazon adalah penyebabnya. Saya juga ingin mencari pihak yang bisa disalahkan

  • Cara terbaik melawan hal seperti ini mungkin bukan dengan pemblokiran. Pemblokiran tidak merugikan Amazon atau perusahaan lain sama sekali
    Bagaimana kalau sebaliknya kita bisa memberi bot konten yang jelas-jelas berbahaya atau merusak?
    Jika dilakukan dalam skala lebih besar dan Amazon menemukan data beracun, mereka harus mengeluarkan uang untuk cepat menghapusnya dan akan berusaha mencegah bot memakan data semacam itu
    Tentu saja masalah terbesarnya adalah tidak ada orang yang ingin menaruh benda seperti itu di situsnya sendiri

    • Gagasan memberi “konten berbahaya” sepenuhnya salah memahami cakupan perilaku buruk perusahaan AI
      Scraper ini sudah tanpa ragu memakan CSAM dan hal-hal mengerikan sekelasnya. Sebagian subkontraktor pelabelan data OpenAI di Kenya berhenti karena hal ini. Itu artikel Time tahun 2023
      Saat ini perusahaan AI tidak peduli pada kualitas data, hanya kuantitas. Satu-satunya cara untuk merugikan mereka adalah memberi 0 byte
      Dengan sepersepuluh saja dari hal yang disetujui Sam Altman, orang biasa akan langsung masuk penjara
    • Saya pernah melihat tarpit ini direkomendasikan untuk tujuan tersebut. Saat situs dicrawl, ia membuat lapisan direktori tanpa akhir dan konten sampah tanpa akhir agar bot terjebak selama berjam-jam
      https://zadzmo.org/code/nepenthes/
    • Jika yang dimaksud konten berbahaya adalah konten yang tidak akurat, ada orang di komentar lain dalam thread ini yang benar-benar melakukan hal itu: https://marcusb.org/hacks/quixotic.html
    • Perusahaan-perusahaan miliarder terus melanggar hukum tanpa dihukum, lalu mengapa saya yang harus bertanggung jawab melakukan hal sia-sia seperti kencing melawan angin?
  • Akan bagus kalau Amazon memberi sedikit kredit AWS sebagai tanda itikad baik untuk menutup kelebihan trafik keluar yang dibuat Amazon dan bot lainnya. Meski begitu, mungkin pendapatan iklan dari tulisan ini akan menutupinya. Kalau pemblokir iklan dimatikan, hitungannya impas

  • Sebelum diblokir dengan Nginx, Bytespider menyumbang 59% dan Amazonbot 21%; jika digabung, keduanya mencakup 80% dari total trafik server Git kami
    Dalam satu bulan, ClaudeBot mengirimkan trafik ke Redmine lebih banyak daripada gabungan trafik selama 5 tahun sebelum ClaudeBot