
Quand Next.js rencontre les nids de poule du web crawling
Tous ceux qui ont fait du crawling sur le web savent que les sites rendus côté serveur sont comme une noix difficile à casser. En particulier avec le site Next.js, les robots d'indexation habituels mangent souvent la porte. Cette fois-ci, nous devons sortir notre killer app...Acquisition côté serveur + proxy IPLa combinaison.
Récemment, j'ai aidé un ami à réaliser un projet de surveillance des prix du commerce électronique, et le site web cible a été créé avec Next.js. Au début, j'ai utilisé l'outil d'automatisation du navigateur pour le renforcer, et le résultat a été que l'IP a été supprimée en deux jours. Plus tard, j'ai changé pour utiliser la collection de rendu côté serveur, avec l'outil d'automatisation du navigateur Next.js.ipipgole taux de réussite de la collecte est passé directement de 30% à 95%.
Trois grands avantages de l'acquisition côté serveur
1. Mode furtif activéLes empreintes digitales des navigateurs sont contournées, comme si l'on portait une cape d'invisibilité.
2. Spécialiste du contrôle de la mémoireLe système de gestion de la mémoire : économisez au moins 601 TP3T de mémoire par rapport à Puppeteer !
3. Naturellement résistant à l'escalade dorsaleexécution de JS côté serveur, avec retour d'un code HTML entièrement rendu
// Exemple de capture côté serveur Next.js
export async function getServerSideProps() {
const proxyUrl = 'http://user:pass@gateway.ipipgo.com:8080'
const targetUrl = 'https://目标网站.com'
const response = await fetch(targetUrl, {
headers : {'Proxy-Authorisation' : `Basic ${btoa('user:pass')}`}, {
agent : new HttpsProxyAgent(proxyUrl)
})
return { props : { data : await response.text() } }
}
Manuel pratique sur la sélection de l'IP proxy
| typologie | Scénarios applicables | Programme recommandé |
|---|---|---|
| Agent résidentiel | Acquisition à haute fréquence | pool résidentiel dynamique de l'ipipgo |
| centres de données | rotation rapide | ipipgo Dedicated High Speed IP |
| Agent mobile | Collecte de données APP | Réseau cellulaire 4G/5G d'ipipgo |
le déplacement (par exemple, de l'essence ou du carburant diesel)ipipgoqui fait automatiquement correspondre le nœud mandataire optimal. LeurMécanisme de non-réessaiParticulièrement adapté à l'architecture hybride CSR (Client Side Rendering) de Next.js, il réessaie automatiquement lorsqu'il rencontre un chargement de page incomplet.
Cinq actions obscures pour éviter le blocage de l'IP
1. sélectionner au hasard l'agent utilisateur pour chaque demande, ne pas toujours utiliser la même identité.
2) Fixez des intervalles raisonnables entre les demandes, ne faites pas de demandes comme si vous étiez en train de faire une attaque cérébrale.
3) Mélange de navigateurs sans tête et de requêtes HTTP pures
4. utiliseripipgoLa fonction de changement automatique d'IP, toutes les 10 demandes d'une nouvelle IP
5) Surveiller le code d'état de la réponse et changer de canal immédiatement en cas de 429.
AQ pratique Triple frappe
Q : Que dois-je faire si j'obtiens toujours une page blanche lors de la collecte ?
A:八成是JS没执行完,试试在fetch后加个3秒,或者用ipipgoService d'agent de rendu
Q : Que dois-je faire si la vitesse de l'IP proxy est trop lente pour affecter l'efficacité ?
R : Utilisez la fonctioncanal à grande vitesseSi vous souhaitez utiliser HTTP/2, n'oubliez pas d'activer le support HTTP/2 dans le code, cela peut accélérer 401 TP3T.
Q : Que puis-je faire si je rencontre une protection Cloudflare ?
A : Vers le hautipipgoL'agent d'empreinte digitale du navigateur en situation réelle, associé à sa solution anti-scraping, est conçu pour remédier à tous les types de CAPTCHA.
Un guide pour éviter le gouffre (Leçons de larmes)
La dernière fois, je n'ai pas prêté attention au champ Accept-Encoding dans l'en-tête de la requête, et le site web cible a reconnu qu'il s'agissait d'un trafic anormal. Plus tard, j'ai utilisé le champipipgoLa fonction de génération automatique de l'en-tête de la requête est la seule façon de résoudre le problème. Il m'est également arrivé d'oublier de gérer les cookies, ce qui a conduit à la collecte de pages en cache, un écueil que nous ne devons pas franchir.
Un dernier conseil : legetStaticPropsLa collecte chronométrée est effectuée en conjonction avec laipipgoL'API de l'acquisition dynamique de proxies, qui peut garantir la fraîcheur des données, mais n'est pas facile à déclencher la limite de fréquence. Nous utilisons cette solution depuis un peu plus de six mois et elle est aussi solide qu'un lot.

