
Apprentissage pratique de l'utilisation du langage Go pickpocket proxy IP
Nous faisons de la collecte de données sur les vieux conducteurs et comprenons que l'absence d'adresse IP proxy revient à conduire sans volant. Aujourd'hui, je vais vous donner quelques éléments concrets, utiliser le langage Go pour écrire un résolveur d'IP proxy, et me concentrer sur la façon d'extraire l'adresse IP proxy de la page web.
// Un exemple : récupérer des adresses IP à partir d'une table web
func parseIPTable(html string) []string {
re := regexp.MustCompile(`<td>(d+.d+.d+.d+)</td>.?<td>(d+)</td>`)
matches := re.FindAllStringSubmatch(html, -1)
var proxies []string
for _, match := range matches {
proxies = append(proxies, fmt.Sprintf("%s:%s", match[1], match[2]))
}
return proxies
}
Cette expression régulière semble simple, mais elle comporte plusieurs élémentsnid-de-pouleAttention : la structure de la page web change souvent, certains sites mettent délibérément une fausse IP, le tableau peut être mélangé avec du contenu publicitaire. C'est le moment d'utiliser le pool de proxy prêt à l'emploi d'ipipgo, plutôt que de tirer la page web soi-même pour s'épargner bien des soucis.
Authentification IP du proxy
Il est difficile d'abaisser l'IP, huit sur dix ne peuvent pas être utilisés, comment faire ? Je vais vous apprendre un truc :
| étape de vérification | prendre une période de (x temps) | taux de réussite |
|---|---|---|
| Connexion TCP uniquement | 2 secondes. | 40% |
| Test avec le site cible | 5 secondes. | 80% |
| Détection de la concurrence à plusieurs nœuds | 3 secondes. | 95% |
Si c'est trop difficile, il suffit d'utiliser celui d'ipipgo.Pool IP pré-vérifiéL'entreprise a déjà effectué trois cycles de sélection pour nous. Leur API renvoie l'IP prête à l'emploi, ce qui vous évite d'avoir à la vérifier.
Cas pratique : la collecte d'un site web d'information sur les entreprises
Récemment, un frère m'a demandé de l'aide, il m'a dit que sa société devait collecter des données d'entreprise et que les résultats du site étaient trop durs pour l'escalade. Je vous propose de voir comment nous y parvenons :
func main() {
// Obtenir 10 proxies de ipipgo
proxies := ipipgo.GetProxies(10, "http")
for _, proxy := range proxies {
client := &http.Client {
Transport : &http.Transport{Proxy : http.ProxyURL(proxy)},
Timeout : 8 time.Second
Timeout : 8 time.Second }
// N'oubliez pas de gérer les exceptions ici
resp, _ := client.Get("target site")
// Analyse des données...
}
}
Cette méthode a permis de contourner le mécanisme anti-escalade. Le point clé est le suivantDifférents mandataires par demandeLe pool d'adresses IP d'ipipgo est suffisamment grand pour que nous puissions l'utiliser à tour de rôle.
Ancien conducteur QA Time
Q : Pourquoi ne puis-je pas utiliser l'adresse IP proxy que j'ai reçue ?
R : Il y a deux situations courantes : soit le proxy échoue (courte durée de survie de leur propre IP), soit le site cible a bloqué le segment du proxy. Il est recommandé d'utiliser ipipgo, ces fournisseurs de services professionnels, leur IP se met à jour rapidement, il y a une garantie de survie de 24 heures !
Q : Comment améliorer la vitesse de collecte ?
R : trois astuces : 1. demandes simultanées avec le pool simultané 2. fixer un délai raisonnable 3. ne pas attraper un site féroce, avec une demande de dispersion d'IP par proxy
Q : A quoi dois-je faire attention lorsque je choisis un fournisseur de services proxy ?
R : les points suivants doivent être pris en compte : taille du pool d'adresses IP (le pool recommandé est d'un million), prise en charge des protocoles (HTTP/HTTPS/Socks5), vitesse de réponse (moyenne de 200 ms mesurée par ipipgo), possibilité d'essai (ils proposent un forfait d'essai de 3 yuans).

