热门标签 | 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%还是有差别的。


推荐阅读
  • 本文深入探讨了 PHP 实现计划任务的方法,包括其原理、具体实现方式以及在不同操作系统中的应用。通过详细示例和代码片段,帮助开发者理解和掌握如何高效地设置和管理定时任务。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 使用 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在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
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社区 版权所有