热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用代理ip防止爬虫被封ip(附蘑菇代理开发过程)

在我们使用爬虫的过程中,很容易遇到反爬机制是禁用ip的,可以使用代理ip解决ip被封的问题。但是网上ip代理有很多家,到底选哪家好呢&#x

在我们使用爬虫的过程中,很容易遇到反爬机制是禁用ip的,可以使用代理ip解决ip被封的问题。但是网上ip代理有很多家,到底选哪家好呢?可以看看这篇文章:https://cuiqingcai.com/5094.html。

本文选择蘑菇代理(官网地址http://www.moguproxy.com)进行演示,使用php语言,如果需要大规模抓取可以去试试python。

可以看到官网提供两种方式进行代理,一种是ip代理,一种是隧道代理。ip代理就是把ip和端口号给你,你拿去用,一般有效期是三分钟;隧道代理就是你把网址提交到给代理服务商,代理服务商使用自己的代理ip帮你访问这个网站,然后把信息返回给你。

1、第一种方式

首先代理提供商会提供给你一个ip接口,你可以通过这个接口去获取ip和端口号。但是这些ip的时效是三分钟,所以我建立了一个ip池,每两分钟去更新一次ip池,以确保这些ip每次用到的时候都是有效的(当然官网说ip可用率是>95%)。下面给出代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);//要访问的url
curl_setopt ($ch, CURLOPT_PROXY, $ip);//使用代理访问 $ip是 ip:port 格式
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/3.0.0.13');//有的网站需要ua,设置一下
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//https网站取消ssl验证
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);//允许30*跳转
curl_setopt($ch, CURLOPT_TIMEOUT,30);//设置超时时间
$response = curl_exec($ch);
if ($response === false) {$error_info = curl_error($ch);curl_close($ch);//关闭curlreturn false;
} else {curl_close($ch);//关闭curlvar_dump($response);
}

2、第二种方式

查看蘑菇代理接入文档php代码

替换appkey之后,发现根本不行,一直提示权限不足。后来检查代码才发现 “$appKey = 'Basic '+ 'XXXXXXXX';”的问题,php中拼接字符串应该用“.”,而不是“+”,这里用加号$appKey的值变成0了,我问客服这段代码谁写的,他居然和我说是用户提供的,笑哭了。改了代码之后发现不能实现301重定向,不能抓取https的网址。果断改写成curl的。下面是代码:

$appKey = 'Basic '. 'Q2R1cmNFbEc1VWU5eGVKYTpqcUZmNU';//这里appkey在蘑菇代理控制台找到$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);//要访问的url
curl_setopt ($ch, CURLOPT_PROXY, 'transfer.mogumiao.com:9001');//使用代理访问
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.1.0.13');
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Proxy-Authorization: {$appKey}"]);//设置代理权限
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//https网站取消ssl验证
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);//允许30*跳转
curl_setopt($ch, CURLOPT_TIMEOUT,30);//设置超时时间
$response = curl_exec($ch);
if ($response === false) {$error_info = curl_error($ch);curl_close($ch);//关闭curlreturn false;
} else {curl_close($ch);//关闭curlvar_dump($response);
}

用了一周蘑菇代理,实测ip可用率只有81%,与官网说的大于95%还是有差别的。


推荐阅读
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了Git分布式版本控制系统中远程仓库的概念和操作方法。通过具体案例,帮助读者更好地理解和掌握如何高效管理代码库。 ... [详细]
author-avatar
成亚穗_530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有