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


推荐阅读
  • 1.选择一个翻译页面,我选择的是有道词典(http:dict.youdao.com)2.随便输入一个英语单词进行翻译,然后查看源文件,找到 ... [详细]
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
  • 本文深入探讨了OpenCV中的Canny边缘检测算法,并通过具体的Python代码实例展示了如何实现特定区域的轮廓线提取。适合初学者和专业人士参考。 ... [详细]
  • 使用Python模拟登录教务系统抓取成绩并分析存储
    本文详细介绍如何使用Python编程语言模拟登录学校教务系统,抓取学生的成绩信息,并进行数据分析和可视化处理,最终将数据存储到MySQL数据库中。 ... [详细]
  • C#爬虫Fiddler插件开发自动生成代码
    哈喽^_^一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 深入理解FastDFS
    FastDFS是一款高效、简洁的分布式文件系统,广泛应用于互联网应用中,用于处理大量用户上传的文件,如图片、视频等。本文探讨了FastDFS的设计理念及其如何通过独特的架构设计提高性能和可靠性。 ... [详细]
  • PHP中的Content-Type含义及其功能解析
    在PHP中,Content-Type头部信息用于定义资源的媒体类型(MIME类型),这对于确保客户端正确解析服务器响应至关重要。 ... [详细]
  • ipvsadm命令简介:ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。在fedora14、Linux6.0之后系统中 ... [详细]
  • 探索Arjun v1.3:高效挖掘HTTP参数的利器
    本文将详细介绍一款名为Arjun的开源安全工具,该工具能够帮助安全研究人员有效提取和分析HTTP参数。请注意,Arjun v1.3要求运行环境为Python 3.4及以上版本。 ... [详细]
  • 手把手教你构建简易JSON解析器
    本文将带你深入了解JSON解析器的构建过程,通过实践掌握JSON解析的基本原理。适合所有对数据解析感兴趣的开发者。 ... [详细]
  • 导读上一篇讲了zsh的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf的使用等等。其中很多内容没有必要记忆,作为手册参 ... [详细]
  • 本文基于https://major.io/2014/05/13/coreos-vs-project-atomic-a-review/的内容,对CoreOS和Atomic两个操作系统进行了详细的对比,涵盖部署、管理和安全性等多个方面。 ... [详细]
  • JavaScript 面向对象编程中的继承机制
    本文详细介绍了JavaScript中实现类继承的几种常见方法,包括通过扩展Object的prototype、使用原型链以及利用call、apply和bind等技术手段。每种方法都有其特点和适用场景。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
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社区 版权所有