Tapak web semasa kami biasanya bergantung pada berpuluh-puluh sumber yang berbeza, seperti koleksi monolitik imej, CSS, fon, JavaScript, data JSON, dll. Walau bagaimanapun, tapak web pertama di dunia hanya ditulis dalam HTML.
JavaScript, sebagai bahasa skrip pihak pelanggan yang sangat baik, telah memainkan peranan penting dalam evolusi tapak web. Dengan bantuan objek XMLHttpRequest atau XHR, JavaScript boleh mencapai komunikasi antara pelanggan dan pelayan tanpa memuatkan semula halaman.
Walau bagaimanapun, proses dinamik ini dicabar oleh API Ambil. Apakah itu Fetch API? Bagaimana untuk menggunakan API Ambil dalam Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch?? Mengapakah Fetch API pilihan yang lebih baik?
Mula dapatkan jawapan daripada artikel ini sekarang!
Dalam Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch?, permintaan HTTP adalah bahagian asas dalam membina aplikasi web atau berinteraksi dengan perkhidmatan web. Mereka membenarkan pelanggan (seperti penyemak imbas atau aplikasi lain) menghantar data ke pelayan, atau meminta data daripada pelayan. Permintaan ini menggunakan Hypertext Transfer Protocol (HTTP), yang merupakan asas komunikasi data di web.
Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? telah menjadi salah satu teknologi popular untuk tugas mengikis dan automasi web kerana ciri uniknya, ekosistem yang teguh dan seni bina tidak segerak dan tidak menyekat.
Mengapa Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? sesuai untuk mengikis dan automasi web? Mari kita fikirkan mereka!
Node-fetch ialah modul ringan yang membawa API Fetch ke persekitaran Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch?. Ia memudahkan proses membuat permintaan HTTP dan mengendalikan respons.
API Fetch dibina berdasarkan Promises dan sangat sesuai untuk operasi tak segerak seperti mengikis data daripada tapak web, berinteraksi dengan API RESTful atau mengautomasikan tugas.
API Fetch ialah antara muka berasaskan Promise moden yang direka untuk mengendalikan permintaan rangkaian dengan cara yang lebih cekap dan fleksibel berbanding objek XMLHttpRequest tradisional.
Ia disokong secara asli dalam penyemak imbas kontemporari, bermakna tidak perlu untuk perpustakaan atau pemalam tambahan. Dalam panduan ini, kami akan meneroka cara menggunakan API Ambil untuk melaksanakan permintaan GET dan POST, serta cara mengurus respons dan ralat dengan berkesan.
? Nota: Jika Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? tidak dipasang pada komputer anda, anda perlu memasangnya terlebih dahulu. Anda boleh memuat turun pakej pemasangan Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? yang sesuai untuk sistem pengendalian anda di sini. Versi Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? yang disyorkan ialah 18 dan ke atas.
Jika anda belum mencipta projek lagi, anda boleh mencipta projek baharu dengan arahan berikut:
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
Buka fail package.json, tambah medan jenis dan tetapkannya kepada modul:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Ini ialah perpustakaan untuk menggunakan API Ambil dalam Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch?. Anda boleh memasang pustaka pengambilan nod dengan arahan berikut:
npm install node-fetch
Selepas muat turun selesai, kami boleh mula menggunakan API Ambil untuk menghantar permintaan rangkaian. Buat fail index.js baharu dalam direktori akar projek dan tambah kod berikut:
import fetch from 'node-fetch'; fetch('https://jsonplaceholder.typicode.com/posts') .then((response) => response.json()) .then((data) => console.log(data)) .catch((error) => console.error(error));
Laksanakan arahan berikut untuk menjalankan kod:
node index.js
Kita akan melihat Bagaimana untuk Membuat Permintaan HTTP dalam Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? dengan API Node-Fetch? berikut:
Bagaimana untuk menggunakan API Ambil untuk menghantar permintaan POST? Sila rujuk kaedah berikut. Buat fail baharu post.js dalam direktori akar projek dan tambah kod berikut:
import fetch from 'node-fetch'; const postData = { title: 'foo', body: 'bar', userId: 1, }; fetch('https://jsonplaceholder.typicode.com/posts', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(postData), }) .then((response) => response.json()) .then((data) => console.log(data)) .catch((error) => console.error(error));
Mari kita analisa kod ini:
Laksanakan arahan berikut untuk menjalankan kod:
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
Output yang anda boleh lihat:
Kita perlu mencipta respons.js fail baharu dalam direktori akar projek dan tambah kod berikut:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Dalam kod di atas, kami mula-mula mengisi alamat URL yang salah untuk mencetuskan ralat HTTP. Kemudian kami menyemak kod status respons yang terhasil dalam kaedah kemudian, dan membuang ralat jika kod status bukan 200. Akhirnya, kami menangkap ralat dalam kaedah tangkapan dan mencetaknya.
Laksanakan arahan berikut untuk menjalankan kod:
npm install node-fetch
Selepas kod dilaksanakan, anda akan melihat Bagaimana untuk Membuat Permintaan HTTP dalam Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? dengan API Node-Fetch? berikut:
CAPTCHA (ujian Turing Awam Automatik Sepenuhnya untuk memberitahu Komputer dan Manusia) direka bentuk untuk menghalang sistem automatik, seperti pengikis web, daripada mengakses tapak web. Mereka biasanya memerlukan pengguna untuk membuktikan mereka adalah manusia dengan menyelesaikan teka-teki, mengenal pasti objek dalam imej atau memasukkan aksara yang herot.
Banyak tapak web moden menggunakan rangka kerja JavaScript seperti React, Angular atau Vue.js untuk memuatkan kandungan secara dinamik. Ini bermakna kandungan yang anda lihat dalam penyemak imbas selalunya dipaparkan selepas halaman dimuatkan, menjadikannya sukar untuk mengikis dengan kaedah tradisional yang bergantung pada HTML statik.
Tapak web sering melaksanakan langkah untuk mengesan dan menyekat aktiviti mengikis, salah satu kaedah yang paling biasa ialah menyekat IP. Ini berlaku apabila terlalu banyak permintaan dihantar daripada alamat IP yang sama dalam tempoh yang singkat, menyebabkan tapak web membenderakan dan menyekat IP tersebut.
Scrapeless ialah salah satu alat mengikis komprehensif terbaik kerana keupayaannya untuk memintas sekatan tapak web dalam masa nyata, termasuk penyekatan IP, cabaran CAPTCHA dan pemaparan JavaScript. Ia menyokong ciri lanjutan seperti putaran IP, pengurusan cap jari TLS dan penyelesaian CAPTCHA, menjadikannya sesuai untuk mengikis web berskala besar.
Penyatuan mudahnya dengan Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? dan kadar kejayaan yang tinggi untuk mengelakkan pengesanan menjadikan Scrapeless pilihan yang boleh dipercayai dan cekap untuk memintas pertahanan anti-bot moden, memastikan operasi mengikis lancar dan tidak terganggu.
Hanya ikut beberapa langkah mudah, anda boleh menyepadukan Scrapeless ke dalam projek Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? anda.
Sudah tiba masanya untuk terus menatal! Perkara berikut akan menjadi lebih menarik!
Sebelum anda bermula, anda perlu mendaftar akaun Scrapeless.
Kita perlu pergi ke Papan Pemuka Tanpa Scrape, klik menu "API Mengikis" di sebelah kiri, dan kemudian pilih perkhidmatan yang ingin anda gunakan.
Di sini kita boleh menggunakan perkhidmatan "Amazon"
Memasuki halaman API Amazon, kami dapat melihat bahawa Scrapeless telah memberikan kami parameter lalai dan contoh kod dalam tiga bahasa:
Di sini kami memilih Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? dan menyalin contoh kod ke projek kami:
Contoh kod Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? Scrapeless menggunakan modul http secara lalai. Kami boleh menggunakan modul pengambilan nod untuk menggantikan modul http, supaya kami boleh menggunakan API Ambil untuk menghantar permintaan rangkaian.
Mula-mula, buat fail scraping-api-amazon.js dalam projek kami, dan kemudian gantikan contoh kod yang disediakan oleh Scrapeless dengan contoh kod berikut:
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
Jalankan kod dengan melaksanakan arahan berikut:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Kami akan melihat hasil yang dikembalikan oleh API Tanpa Scrape. Di sini kami hanya mencetaknya. Anda boleh memproses hasil yang dikembalikan mengikut keperluan anda.
Scrapeless menyediakan perkhidmatan Pembuka kunci Web yang boleh membantu anda memintas langkah anti-mengikis biasa, seperti pintasan CAPTCHA, menyekat IP, dll. Perkhidmatan membuka kunci Web boleh membantu anda menyelesaikan beberapa masalah merangkak biasa dan membuat tugas merangkak anda lebih lancar.
Untuk mengesahkan keberkesanan perkhidmatan buka kunci Web, kami boleh menggunakan arahan curl untuk mengakses tapak web yang memerlukan CAPTCHA, kemudian gunakan perkhidmatan buka kunci Web Tanpa Scrape untuk mengakses tapak web yang sama untuk melihat sama ada CAPTCHA boleh berjaya dipintas.
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
Dengan melihat hasil yang dikembalikan, kami dapat melihat bahawa tapak web ini disambungkan kepada mekanisme pengesahan Cloudflare, dan kami perlu memasukkan kod pengesahan untuk terus mengakses tapak web.
Di sini kami mencipta fail web-unlocker.js baharu. Kami masih perlu menggunakan modul pengambilan nod untuk menghantar permintaan rangkaian, jadi kami perlu menggantikan modul http dalam contoh kod yang disediakan oleh Scrapeless dengan modul pengambilan nod:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Laksanakan arahan berikut untuk menjalankan skrip:
npm install node-fetch
Lihat! Pembuka kunci Web Tanpa Scrape berjaya memintas kod pengesahan dan kami dapat melihat bahawa hasil yang dikembalikan mengandungi kandungan halaman web yang kami perlukan.
Untuk memudahkan pilihan anda, Axios dan Fetch API mempunyai perbezaan berikut:
Ciri Node yang paling ketara. js v21 ialah penstabilan API Ambil.
Untuk projek baharu, disyorkan untuk menggunakan API Ambil kerana ciri moden dan kesederhanaannya. Walau bagaimanapun, jika anda perlu menyokong penyemak imbas yang sangat lama atau mengekalkan kod warisan, Ajax mungkin masih diperlukan.
Penambahan API Ambil dalam Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? ialah ciri yang ditunggu-tunggu. Menggunakan API Ambil dalam Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch? boleh memastikan kerja mengikis anda dilakukan dengan mudah. Walau bagaimanapun, tidak dapat dielakkan untuk menghadapi sekatan rangkaian yang serius apabila menggunakan Node Fetch API.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Permintaan HTTP dalam Node.js dengan API Node-Fetch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!