爬虫中代理ip 的选择和使用实战

news2024/10/27 18:54:49

一、爬虫中的反爬问题

爬虫技术不仅是一种工具,更像是一门捕捉信息的艺术。通过它,我们能够从浩瀚的互联网中,精确获取到所需的有价值数据。对于那些需要进行数据分析或模型训练的人来说,爬虫技术几乎是必备的技能。虽然网上公开的数据很多,但由于数据的时效性和准确性问题,很多情况下直接使用这些数据并不理想,因此许多人选择亲自使用爬虫来采集最新、最符合需求的数据。
然而,很多人在爬虫过程中都会遇到反爬机制的困扰。反爬机制是网站为了防止自动化数据抓取而设立的一种防护措施,就像是网站的“防盗系统”,它会通过多种手段识别并阻止自动化工具的访问。比如,网站可能会通过检测单个IP地址的访问频率、分析用户的访问行为、识别使用的工具或用户代理等方法来发现异常。当网站检测到这些异常行为后,通常会采取一些防御措施,比如限制访问频率、直接返回错误信息,甚至完全禁止访问。
按照检查方法,当处于非爬虫操作时,我们在F12控制台输入window.navigator.webdriver时,显示的是false,输入进去出现了刺眼的红色报错,而且显示也出现了True, “Failed to load resource: the server responded with a status of 400”,对这个报错就是非常典型的爬虫被反爬,检测出是selenium,报400,无法进入网站。
在这里插入图片描述

对于很多爬虫新手来说,当出现这样的情况时,常常会一头雾水,不知道是代码出错了还是服务器出了问题。实际上,这种情况多数是因为网站运行了自己的JavaScript检测代码,针对selenium等工具的特性进行了检查。一旦被识别为自动化请求,网站便会触发“防盗系统”,阻止访问请求,从而使爬虫停止工作。

二、反爬出现的原因

触发反爬机制的常见原因之一是单一IP地址在短时间内发出了大量请求。很多网站都有这种限制,一旦某个IP地址的访问频率过高,网站就会将其识别为异常行为并采取防御措施。此外,网站还可能通过检测用户代理(User-Agent)字符串来识别请求来源,甚至通过分析访问模式来判断是否为自动化行为,这些都是常见的反爬策略。
我们此次的触发反爬的原因便是,待爬取的网站运行自己的 JavaScript 代码,对爬虫发送过去的请求信息进行检测,然后发现我们是selenium后,触发了“防盗系统”,就把我们爬虫的请求禁掉了。就像上图所示,表现为返回400错误码,意味着请求无法被服务器理解或接受。
面对这些反爬机制,大家在实际操作中可以采取一些应对措施。比如,通过修改请求头信息来模仿正常用户的浏览行为、使用代理IP池来分散请求压力、增加访问间隔时间以避免触发频率限制等。

三、代理IP解决方案

这时,代理IP显得尤为重要,它能帮助绕过这些限制。代理IP本质上是一个位于用户和目标服务器之间的中介服务器。当用户通过代理IP发送请求时,请求首先到达代理服务器,然后由代理服务器转发到目标服务器。这样,使用代理服务器来代替用户的真实IP地址发送网络请求,从而隐藏用户的真实身份,减少被目标网站识别和封锁的风险。
代理IP的作用

  1. 匿名性:代理IP提供了一种匿名访问网络的方式,用户的真实IP地址被隐藏,从而保护用户的隐私。
  2. 规避IP封锁:当某个IP地址因为频繁访问而被网站封锁时,使用代理IP可以绕过这种限制。
  3. 地理位置多样性:代理IP通常具有不同的地理位置,可以帮助用户访问那些有地区限制的资源。

代理IP的类型

  1. 透明代理:代理服务器向目标服务器透露用户的真实IP地址,但隐藏了请求的来源。
  2. 普通匿名代理:代理服务器不向目标服务器透露用户的真实IP地址,但目标服务器知道请求是通过代理发出的。
  3. 高匿名代理:代理服务器不向目标服务器透露任何用户信息,目标服务器看到的只是代理服务器的IP地址。

四、代理服务的具体操作

代理IP在跨境电商的应用

海外代理IP在跨境电商和海外市场分析中发挥着重要作用。在当下主流的电商平台,如亚马逊和EBay,都对爬虫有着很强的防护机制,不稳定的IP地址就会很容易被平台识别。特别是像EBay这样的海外大平台,它们在全球多个国家和地区设有分支机构,这就需要使用不同地区的IP地址来分别管理。
一个不稳定或被频繁使用的代理IP不仅不可靠,而且速度会很慢,更有可能这个ip已经被注册使用过,如果再使用就会招致来很多不必要的麻烦。因此,无论对从事跨境电子商务的企业,还是做跨境电商数据的用户来说,拥有一个稳定可靠的代理IP是至关重要的;像市面上的代理IP服务多种多样,它们主要提供隐私保护、绕过地域限制、加密传输等功能。选择代理IP服务时,我们通常会考虑其稳定性、速度、安全性以及价格,在试用和对比了市面上的多种代理IP服务后,我个人觉得青果网络的代理IP在网络连通性和业务成功率方面表现突出,它家的稳定性和高可用率在使用过程中也没让人失望,对于需要频繁使用代理IP的用户来说,值得体验。
在这里插入图片描述
现在他们家产品提供6小时的免费试用活动,感兴趣或有需求可先薅一波羊毛试试看。

拿我最喜欢鞋子来举例子,通过使用海外代理ip依靠爬虫,我们就可以轻松获取EBay的海外平台价格。
在这里插入图片描述

首先设置代理IP API URL,将我们生成的代理ip链接放入进去,然后构建代理字典:

proxy_api_url = '你的代理ipURL'
params = {
    'num': 100,
    'return_type': 'txt',
    'lb': 1,
    'sb': 0,
    'flow': 1,
    'regions': '',
    'protocol': 'http'
}

# 获取代理IP
response = requests.post(proxy_api_url, headers=headers, params=params, verify=True)
proxy_ip = response.text

# 构建代理字典
proxies = {
    'http': f'https://{proxy_ip}',
    'https': f'https://{proxy_ip}'
}

print(f"Using proxy: {proxy_ip}")

完成代理ip的部署之后,对商品页面进行抓取,找到我们需要的价格和元素,这里选择了商品价格、货币类型及运费三类信息:
在这里插入图片描述
将这三类信息元素放入我们的爬虫之中,例如价格price_element = soup.select_one('.x-price-primary span[itemprop="price"]'),然后运行爬虫结果,会发现其输出了所有代理ip的信息以及我们所需要的商品的价格和运费信息:
在这里插入图片描述
更进一步来说,通过这一个物品的信息我们就可以解析整个系列的物品信息,通过把所有的物品信息收集起来,就可以做进一步的价格监控、竞品分析、市场趋势等数据分析,具体完整的代码如下:

from fake_useragent import UserAgent
import requests
from bs4 import BeautifulSoup
import re

# 设置随机的请求头
headers = {'User-Agent': UserAgent().random}

# 代理IP API URL
proxy_api_url = '你的代理ipURL'
params = {
    'num': 100,
    'return_type': 'txt',
    'lb': 1,
    'sb': 0,
    'flow': 1,
    'regions': '',
    'protocol': 'http'
}

# 获取代理IP
response = requests.post(proxy_api_url, headers=headers, params=params, verify=True)
proxy_ip = response.text

# 构建代理字典
proxies = {
    'http': f'https://{proxy_ip}',
    'https': f'https://{proxy_ip}'
}

print(f"Using proxy: {proxy_ip}")

# 目标商品URL
item_url = 'https://www.ebay.com/itm/335217926054'

# 商品信息字典
item_info = {}

# 发送请求获取商品页面HTML
try:
    page_response = requests.get(item_url, proxies=proxies)
    page_response.raise_for_status()  # 检查请求是否成功
    soup = BeautifulSoup(page_response.text, 'html.parser')

    # 解析商品价格
    price_element = soup.select_one('.x-price-primary span[itemprop="price"]')
    item_info['price'] = price_element['content'] if price_element else 'Price not found'

    # 解析货币类型
    currency_element = soup.select_one('.x-price-primary span[itemprop="priceCurrency"]')
    item_info['currency'] = currency_element.text.strip() if currency_element else 'Currency not found'

    # 解析运费
    shipping_label = next((label for label in soup.select('.ux-labels-values__labels') if 'Shipping:' in label.text), None)
    if shipping_label:
        shipping_price_element = shipping_label.find_next_sibling('.ux-textspans--BOLD')
        item_info['shipping_price'] = re.search(r'\d+\.\d+', shipping_price_element.text).group(0) if shipping_price_element else 'Shipping price not found'
    else:
        item_info['shipping_price'] = 'Shipping price not found'

except requests.RequestException as e:
    print(f"An error occurred: {e}")

# 打印商品信息
print(item_info)

总结与展望

本文从爬虫技术的反爬问题入手,详细介绍了反爬机制的原理及其常见触发原因。针对反爬机制的应对措施,重点介绍了代理IP的重要性及其在匿名性、规避IP封锁、地理位置多样性等方面的作用。文章还推荐了一个优质的代理服务商——青果网络,并且结合具体实例详细说明了代理IP在浏览器上的设置方法和跨境电商数据抓取中的应用。最后,通过代码示例展示了如何利用代理IP抓取商品的价格、货币类型以及运费等信息,并进一步为电商数据分析提供参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot083基于springboot的个人理财系统--论文pf(论文+源码)_kaic

基于springboot的个人理财系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了个人理财系统的开发全过程。通过分析个人理财系统管理的不足,创建了一个计算机管理个人理财系统的方案。文章介绍了个…

RestHighLevelClient操作es查询文档

目录 利用RestHighLevelClient客户端操作es查询文档 查询match_all dsl语句: ​编辑 java代码 小结 match字段全文检索查询 dsl语句 java代码 multi_match多字段全文检索查询 dsl语句 java代码 term精确查询 dsl语句 java代码 range范围查询 dsl语句 j…

信息学奥赛与其他四大奥赛的区别:深入分析与解读

五大学科奥赛,涵盖了信息学、数学、物理、化学和生物,每一学科竞赛的重点和考查方式都不同。信息学奥赛(NOI)与其他四科相比,独具编程和算法特性。本文将深入分析信息学奥赛与其他四科竞赛在考查内容、备赛方式、实践要…

《BLEU: a Method for Automatic Evaluation of Machine Translation》翻译

文章目录 0. 摘要1. 引言1.1 理由1.2 观点 2. 基准 BLEU 指标2.1 修正的 n-gram 精度2.1.1 对文本块的修正 n-gram 精度2.1.2 仅使用修正 n-gram 精度对系统进行排序2.1.3 结合修正的 n-gram 精度 2.2 句子长度2.2.1 召回率的问题2.2.2 句子简短惩罚 2.3 BLEU 细节 3. BLEU 评估…

芒果数据集(猫脸码客第230期)

芒果深度学习检测:开启农业新视界 一、引言 芒果作为一种重要的热带水果,在全球范围内具有广泛的市场需求和经济价值。随着人们生活水平的提高,对芒果的品质要求也越来越高。芒果产业的规模不断扩大,产量逐年增加,如…

中间件安全(三)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 本文主要讲解apache命令执行漏洞(cve_2021_41773)。 靶场链接:Vulfocus 漏洞威胁分析平台 一,漏洞简介。 cve_2021_41773漏洞…

【Linux探索学习】第一弹——Linux的常用指令

目录 ​编辑 Linux常用命令 1 Linux命令初体验 1.1 常用命令演示 1). ls 2). pwd 3). cd 4). touch 5). mkdir 6). rm 1.2 Linux命令使用技巧 1.3 Linux命令格式 2 文件目录操作命令 2.1 ls 2.2 cd 2.3 cat 2.4 more 2.5 tail 2.6 mkdir 2.7 rmdir 2.8 rm…

《Windows PE》7.4 资源表应用

本节我们将通过两个示例程序,演示对PE文件内图标资源的置换与提取。 本节必须掌握的知识点: 更改图标 提取图标资源 7.4.1 更改图标 让我们来做一个实验,替换PE文件中现有的图标。如果手工替换,一定是先找到资源表,…

Telephony中ITelephony的AIDL调用关系

以Android14.0源码讲解 ITelephony来自framework下的com.android.internal.telephony包下 frameworks/base/telephony/java/com/android/internal/telephony/ITelephony.aidl这个接口用于与Phone交互的界面,主要由TelephonyManager类使用,一些地方仍在…

开拓鸿蒙测试新境界,龙测科技引领自动化测试未来

在当今科技舞台上,鸿蒙 OS 以非凡先进性强势登场,打破传统操作系统格局,为软件测试领域带来全新机遇与艰巨挑战。 一、鸿蒙 OS 的辉煌崛起 (一)壮丽发展历程与卓越市场地位 鸿蒙 OS 的发展如波澜壮阔的史诗。2023 年…

音视频开发之旅(98) -潜扩散模型(Latent Diffusion Model)原理及源码解析

目录 1.背景 2. 潜扩散模型(Latent Diffusion Model)原理 3. 应用场景 4. 推理源码解析 5. 资料 一、背景 前面我们分析扩散模型(Diffusion Model)了解到,它通过向数据中添加噪声,然后训练一个去噪模…

SSM学习day01 JS基础语法

一、JS基础语法 跟java有点像,但是不用注明数据类型 使用var去声明变量 特点1:var关键字声明变量,是为全局变量,作用域很大。在一个代码块中定义的变量,在其他代码块里也能使用 特点2:可以重复定义&#…

【mysql进阶】4-6. InnoDB 磁盘文件

InnoDB 磁盘⽂件 1 InnoDB存储引擎包含哪些磁盘⽂件? 🔍 分析过程 ✅ 解答问题 InnoDB的磁盘⽂件主要是表空间⽂件和其他⽂件,表空间包括:系统表空间、独⽴表空间、通⽤表空间、临时表空间和撤销表空间;其他⽂件有重做…

XQT_UI 组件|03 |加载组件 XQtLoading

XQtLoading 使用文档 简介 XQtLoading 是一个自定义的加载动画组件,旨在为用户提供可配置的旋转花瓣动画效果。它可以在应用程序中用于指示加载状态,提升用户体验。 特征 可配置性:用户可以根据需求调整旋转周期、缩放周期、最大/最小缩放…

JavaScript part2

一.前言 前面我们讲了一下js的基础语法,但是这些还是远远不够的,我们要想操作标签,实现一个动态且好看的页面,就得学会BOM和DOM,这些都是浏览器和页面的,这样我们才能实现一个好看的页面 二.BOM对象 BOM…

golang将指针传给cgo后还能被回收吗?

问题&#xff1a; 如果把golang分配的变量&#xff0c;其指针通过cgo传给c&#xff0c;并被c存储&#xff0c;那这个变量还能被gc回收吗&#xff1f; 实验代码&#xff1a; test_memory_leak.go package main/* #include <stdlib.h> #include <string.h> #incl…

yolov11的onnx模型C++ 调用

yolov11的onnx模型C调用 效果图一、python调用二、onnx模型导出三、python的onnx调用调用检测模型调用分割模型 四、C的onnx模型调用五 、视频流的检测后续 效果图 一、python调用 本文只记录生成的yolov11模型如何调用&#xff0c;其他可参考各种yolov11博客 模型下载&#x…

Spring Boot 应用开发全攻略:从入门到精通

Spring Boot 应用开发全攻略&#xff1a;从入门到精通 引言 在当今快速发展的软件开发领域&#xff0c;Spring Boot 作为一种快速开发框架&#xff0c;凭借其简洁、易用的特性&#xff0c;赢得了开发者的广泛青睐。无论是微服务架构还是传统的单体应用&#xff0c;Spring Boo…

Redis 单机、主从、哨兵和集群架构详解和搭建

目录 前言 单机部署 检查安装 gcc 环境 下载安装 Redis 启动 Redis 关闭 Redis 配置Redis 主从部署 整体架构图 主从复制配置 重启 Redis 验证 主从复制的作⽤ 主从复制缺点 哨兵部署&#xff08;Sentinel&#xff09; 整体架构图 哨兵模式配置 启动哨兵 验证…

首席数据官和首席数据分析官

根据分析人士的预测&#xff0c;首席数据官&#xff08;CDO&#xff09;和首席数据分析官&#xff08;CDAO&#xff09;必须更有效地展示他们对企业和AI项目的价值&#xff0c;以保障其在高管层的地位。Gartner的最新报告指出&#xff0c;CDO和CDAO在AI时代需要重新塑造自身定位…