Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pelaksanaan perangkak berasaskan PHP: cara memerangi strategi anti perangkak

Pelaksanaan perangkak berasaskan PHP: cara memerangi strategi anti perangkak

PHPz
PHPzasal
2023-06-13 15:20:061585semak imbas

Dengan pembangunan berterusan dan pempopularan Internet, permintaan untuk merangkak data tapak web semakin meningkat secara beransur-ansur. Untuk memenuhi permintaan ini, teknologi perangkak telah wujud. Sebagai bahasa pembangunan yang popular, PHP juga digunakan secara meluas dalam pembangunan crawler. Walau bagaimanapun, sesetengah tapak web menggunakan strategi anti-perangkak untuk melindungi data dan sumber mereka daripada mudah dirangkak. Jadi, bagaimana untuk memerangi strategi anti-crawler ini dalam pembangunan perangkak PHP? Mari ketahui di bawah.

1. Kemahiran prasyarat

Jika anda ingin membangunkan program perangkak yang cekap, anda perlu mempunyai kemahiran berikut:

  1. Pengetahuan HTML asas: termasuk struktur HTML , elemen, tag, dsb.
  2. Familiar dengan protokol HTTP: termasuk kaedah permintaan, kod status, pengepala mesej, mesej respons, dsb.
  3. Keupayaan analisis data: menganalisis struktur HTML, gaya CSS, kod JavaScript, dsb. tapak web sasaran.
  4. Pengalaman pengaturcaraan tertentu: Familiar dengan bahasa pengaturcaraan PHP dan Python.

Jika anda kekurangan kemahiran asas ini, dicadangkan untuk belajar asas dahulu.

2. Strategi rangkak

Sebelum anda mula menulis program perangkak, anda perlu memahami mekanisme dan strategi anti perangkak tapak web sasaran.

  1. Peraturan robots.txt

robots.txt ialah standard yang digunakan oleh pentadbir tapak untuk memberitahu perangkak halaman mana yang boleh dan tidak boleh diakses. Sila ambil perhatian bahawa pematuhan peraturan robots.txt ialah keperluan pertama untuk perangkak menjadi perangkak yang sah. Jika fail robots.txt diperoleh, sila semak dahulu dan merangkak mengikut peraturannya.

  1. Kekerapan permintaan

Banyak tapak web akan mengehadkan kekerapan akses untuk menghalang perangkak daripada mengakses terlalu kerap. Jika anda menghadapi situasi ini, anda boleh mempertimbangkan untuk menggunakan strategi berikut:

  • Minta sekali lagi selepas berehat. Anda boleh menggunakan fungsi sleep() untuk menunggu tempoh masa sebelum membuat permintaan semula.
  • Permintaan selari. Anda boleh menggunakan berbilang proses atau urutan untuk menghantar permintaan bagi meningkatkan kecekapan.
  • Simulasi gelagat penyemak imbas. Mensimulasikan tingkah laku penyemak imbas adalah pendekatan yang baik kerana sukar bagi pelayan yang mengehos tapak web untuk mengetahui sama ada program anda mengakses halaman web sebagai manusia.
  1. Pengepala permintaan

Banyak tapak web menggunakan maklumat pengepala permintaan untuk menentukan sama ada untuk menerima permintaan daripada perangkak. Adalah penting untuk memasukkan maklumat Ejen Pengguna dalam pengepala permintaan kerana ini adalah maklumat penting yang dihantar oleh penyemak imbas. Selain itu, untuk mensimulasikan tingkah laku pengguna dengan lebih baik, anda juga mungkin perlu menambahkan beberapa maklumat lain pada pengepala permintaan, seperti Perujuk, Kuki, dsb.

  1. Kod Pengesahan

Hari ini, untuk menangani perangkak, banyak tapak web akan menambah kod pengesahan apabila pengguna berinteraksi untuk membezakan mesin daripada manusia. Jika anda menemui tapak web yang memerlukan anda memasukkan kod pengesahan untuk mendapatkan data, anda boleh memilih penyelesaian berikut:

  • Mengecam kod pengesahan secara automatik, tetapi ini bukan penyelesaian yang boleh dilaksanakan melainkan anda mempunyai beberapa alat penyelesaian kod pengesahan pihak ketiga yang sangat baik.
  • Penyelesaian manual. Selepas membaca halaman analisis, anda boleh memasukkan kod pengesahan secara manual dan terus menjalankan perangkak anda. Walaupun penyelesaian ini lebih rumit, ia boleh dilaksanakan dalam situasi yang sukar.

3. Pelaksanaan Kod

Apabila membangunkan perangkak PHP, anda perlu menggunakan teknologi berikut:

  1. Gunakan perpustakaan sambungan cURL

cURL ialah sambungan berkuasa yang membolehkan skrip PHP anda berinteraksi dengan URL. Menggunakan perpustakaan cURL, anda boleh:

  • Hantar permintaan GET dan POST
  • Pengepala permintaan HTTP tersuai
  • Hantar Kuki
  • Gunakan SSL dan HTTP Pengesahan

Ia adalah salah satu teknologi yang diperlukan untuk melaksanakan perangkak. Anda boleh menggunakan cURL seperti ini:

// 创建 cURL 句柄
$curl = curl_init(); 

// 设置 URL 和其他属性
curl_setopt($curl, CURLOPT_URL, "http://www.example.com/");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);

// 发送请求并获取响应
$response = curl_exec($curl); 

// 关闭 cURL 句柄
curl_close($curl);
  1. Menggunakan ungkapan biasa

Apabila merangkak kandungan tertentu, anda mungkin perlu mengekstrak data daripada halaman HTML. PHP mempunyai sokongan terbina dalam untuk ungkapan biasa, dan anda boleh menggunakan ungkapan biasa untuk mencapai fungsi ini.

Andaikan kita perlu mengekstrak teks dalam semua teg tajuk 4a249f0d628e2318394fd9b75b4636b1 daripada halaman HTML. Anda boleh melakukannya dengan:

$html = ".....";
$pattern = '/<h1>(.*?)</h1>/s'; // 匹配所有 h1 标签里的内容
preg_match_all($pattern, $html, $matches);
  1. Menggunakan PHP Simple HTML DOM Parser

PHP Simple HTML DOM Parser ialah perpustakaan PHP yang ringkas dan mudah digunakan yang menggunakan sesuatu seperti sintaks jQuery Selector untuk memilih elemen dalam dokumen HTML. Anda boleh menggunakannya untuk:

  • Menghuraikan halaman HTML dan mendapatkan elemen
  • Mensimulasikan klik dan menyerahkan borang
  • Mencari elemen

Pasang PHP Simple HTML DOM Parser adalah sangat mudah dan anda boleh memasangnya melalui Composer.

  1. Gunakan proksi

Menggunakan proksi ialah strategi anti perangkak yang sangat berkesan. Anda boleh menyebarkan trafik anda merentasi berbilang alamat IP untuk mengelak daripada ditolak oleh pelayan atau menjana trafik yang berlebihan. Oleh itu, menggunakan proksi membolehkan anda melaksanakan tugas merangkak anda dengan lebih selamat.

Akhir sekali, tidak kira strategi yang anda pakai, anda perlu mematuhi peraturan, protokol dan spesifikasi yang berkaitan dalam pembangunan perangkak. Adalah penting untuk tidak menggunakan perangkak untuk melanggar kerahsiaan tapak web atau mendapatkan rahsia perdagangan. Jika anda ingin menggunakan perangkak untuk mengumpul data, pastikan maklumat yang anda peroleh adalah sah.

Atas ialah kandungan terperinci Pelaksanaan perangkak berasaskan PHP: cara memerangi strategi anti perangkak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn