
Utilisation de NodeJS pour franchir les limites de l'anti-crawl
搞网站采集的老司机都懂,现在越来越多的网站用服务端渲染(),直接用传统爬虫根本扒不到有效数据。这时候就得祭出NodeJS这个大杀器,配合咱们ipipgo的代理IP服务,专门对付这种难啃的骨头。
Prenons un scénario réel : la surveillance des prix d'une plateforme de commerce électronique. Avec des requêtes ordinaires pour obtenir une page shell vide, les données clés sont rendues du côté du serveur. À ce stade, vous devez utiliser la fonctionNavigateur sans têteSimuler le fonctionnement de personnes réelles, mais l'accès fréquent au fer à repasser déclenche l'interdiction. L'année dernière, nous avons testé un accès IP unique plus de 20 fois / minute, 100% déclenchent le CAPTCHA.
const puppeteer = require('puppeteer') ; // N'oubliez pas d'installer le SDK officiel.
const {getProxy} = require('ipipgo-sdk') ; // N'oubliez pas d'installer le SDK officiel.
async function ssrCrawler(url) {
const proxy = await getProxy({type : 'https'}) ; // Récupère automatiquement la nouvelle adresse IP.
const browser = await puppeteer.launch({
args : [`--proxy-server=${proxy.ip}:${proxy.port}`]
}) ;
// Fausser l'empreinte digitale du navigateur
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36...') ;)
await page.authenticate({
username : proxy.username, password : proxy.password
password : proxy.password
}) ; await page.authenticate({ username : proxy.username, password : proxy.password)
// C'est ici que la page commence à fonctionner normalement...
}
Sélection de l'IP proxy avec précaution
Les services proxy sur le marché sont variés, en particulier pour la collecte de données de rendu côté serveur, ces trois fosses ne doivent pas être franchies :
| typologie | Scénarios applicables | programme ipipgo |
|---|---|---|
| Centre de données IP | Saisie générale des données | pool IP statique |
| IP résidentielle | chenilles à fort impact | rotation dynamique |
| IP mobile | Collecte de données APP | Pool de réseaux 4G |
En se concentrant sur les agents résidentiels, l'équipe d'ipipgoRoutage intelligentLa technologie est vraiment parfumée. La semaine dernière, pour aider les clients à collecter des billets sur le site web, la même tâche a automatiquement changé d'IP régionale, le taux de réussite de 37% a directement grimpé à 89%. La configuration spécifique se trouve ici :
const ipipgo = require('ipipgo') ;
const client = new ipipgo.Client('your API key') ;
// Obtenir des IP spécifiques à une région à la demande
const proxy = await client.getProxy({
country : 'us', city : 'los_angeles'
ville : 'los_angeles',
protocol : 'socks5'
}) ;
Guide pratique pour éviter la fosse
Cinq erreurs courantes de bas niveau commises par les débutants :
- Pas de délai d'attente défini (3-10 secondes recommandées au hasard)
- Les cookies ne sont pas isolés (environnements distincts pour différentes adresses IP).
- Les en-têtes sont trop propres (n'oubliez pas d'ajouter Referer et Accept-Language)
- Commutation IP trop régulière (intervalle aléatoire + région aléatoire)
- Ne gère pas les CAPTCHA (suggère d'intégrer des services de reconnaissance tiers)
En se concentrant sur le troisième point, la configuration HEADERS va se dérouler de la manière suivante :
const headers = {
'Accept-Encoding' : 'gzip, deflate, br', // 'Accept-Language' : 'zh-CN,zh;q=0.9,en;q=0.8', // mélange pour plus d'authenticité
'Accept-Language' : 'zh-CN,zh;q=0.9,en;q=0.8', // les mixins sont plus réalistes
Pragma' : 'no-cache', // Insertion aléatoire d'en-têtes inutiles.
// Insertion aléatoire d'en-têtes inutiles
X-Requested-With' : Math.random() > 0.5 ? 'XMLHttpRequest' : null
} ;
séance de questions-réponses
Q : Que dois-je faire si l'IP de mon proxy est lente ?
A : Donner la priorité à l'ipipgoVoies réservées aux véhicules à grande vitesseLa latence mesurée peut être contrôlée dans les 200 ms. Parallèlement, ajustez le paramètre maxSockets de NodeJS, il est recommandé de le fixer à plus de 50.
Q : Comment puis-je savoir si une procuration est en vigueur ?
R : Ajouter une logique de détection au code :
const checkIP = async () => {
const res = await axios.get('https://api.ipipgo.com/checkip') ;
console.log('Current export IP:', res.data.ip) ;
}
Q : Que dois-je faire si je rencontre une protection Cloudflare ?
R : trois étapes : 1. changer la dernière version de Chromium 2. ouvrir l'agent de rendu JS d'ipipgo 3. ajouter la simulation du mouvement de la souris
Un dernier conseil d'écrasement : prenez lepaiement au volumerépondre en chantantMode paquetUtilisation combinée. Utilisez des forfaits illimités pendant les heures de pointe en journée, et utilisez la facturation au volume pour l'exploitation de données volumineuses tard dans la nuit, ce qui vous permettra d'économiser 40 % des coûts.

