我是怎样把反反爬虫把数据爬下来的

  最近看到公司的商务一条一条的从某个网站上复制数据到excel里,于是乎就打算写个爬虫把那个网站的数据都爬下来.一般的流程是模拟用户访问->获取数据->解析页面元素->balabala想干啥干啥.但这个网站大概是知道自己对爬虫很有吸引力,于是做了反爬虫的处理.查看返回的数据有一段这样的代码:

void(function fuckie6(){if(location.hash && /MSIE 6/.test(navigator.userAgent) && !/jsl_sec/.test(location.href)){location.href = location.href.split(‘#‘)[0] + ‘&jsl_sec‘ + location.hash}})();
var content = _.template(document.getElementById(‘content_tpl‘).innerHTML)({
    error_403: ‘当前访问因疑似CC攻击,已被云防御拦截‘ || ‘当前访问疑似黑客攻击,已被网站管理员设置为拦截‘,
    url: document.URL.replace(/\</g,"%3C").replace(/\>/g,"%3E"),
    user_agent: navigator.userAgent,
    now: new Date(new Date() - -8 * 3600000).toISOString().substr(0, 19).replace(‘T‘, ‘ ‘),
    rule_id: parseInt(‘<!--RULE_ID-->‘.replace(/\[|\]/g, ‘‘)) || ‘‘,
    from: encodeURIComponent(document.referrer.substr(0, 1024)),
    client_ip: ‘183.14.132.72‘,
    ref: encodeURIComponent(document.URL.substr(0, 1024))
});
document.getElementById(‘content_rendered‘).innerHTML = content;

不是很明白为什么要把拦截情况用js来处理,也有可能是通过js来拦截爬虫.总之让我感觉他是通过判断访问的客户端类型(userAgent)来反爬虫,这样就很好解决了.curl代码如下:

//欺骗服务端,隐藏自己的客户端
    public function liar($url)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "GET"
        ));
        //伪造ip以及客户端
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(‘X-FORWARDED-FOR:111.222.333.4‘, ‘CLIENT-IP:111.222.333.4‘));
        curl_setopt($curl, CURLOPT_REFERER, "http://www.test.com");
        curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11");
        $response = curl_exec($curl);
        curl_close($curl);
        return $response;
    }
CURLOPT_USERAGENT这个值可以伪造客户端类型,这次程序中我把自己伪造成了Mozilla,同时怕对方拦截到我的ip而设置黑名单所以也设置了访问ip以及来路页面.这些应该是初级反反爬虫技术,不过可以爬下大部分的网站了.拿到数据后,用simple_html_dom类来解析数据,具体就不放出啦~跟jq很相似的使用方法.爬下的数据,想用phpexcel导出,想存到数据库随便啦~
时间: 2024-11-13 08:09:16

我是怎样把反反爬虫把数据爬下来的的相关文章

Python爬虫 股票数据爬取

前一篇提到了与股票数据相关的可能几种数据情况,本篇接着上篇,介绍一下多个网页的数据爬取.目标抓取平安银行(000001)从1989年~2017年的全部财务数据. 数据源分析 地址分析 http://money.finance.sina.com.cn/corp/go.php/vFD_FinancialGuideLine/stockid/000001/ctrl/2017/displaytype/4.phtml 在浏览器(PC上)中打开这个地址,就可以看到下图显示的财务数据.这个地址是一个通用格式:(

python爬虫13--Ajax数据爬取

1. Ajax介绍 Ajax,Asynchronous JavaScript and XML,即异步的JavaScript和XML.它不是编程语言,而是利用JavaScript在保证页面不被刷新.页面链接不改变的情况下,与服务器交换数据并更新部分网页的技术. 2. Ajax基本原理 发送Ajax请求到网页更新的过程可以分为3步: 发送请求 解析内容 渲染页面 //创建XMLHttpRequest对象 var xmlhttp; if(window.XMLHttpRequest){ xmlhttp=

爬虫1.5-ajax数据爬取

目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 1. ajax数据 ajax (异步JavaScript 和 XML)(读作阿贾克斯),ajax可以时网页实现异步更新,一般使用的json数据交互,即在不重新加载整个页面也可以对网页的部分进行更新,ajax技术加载的数据在网页源代码中是看不到的,只能看到url加载的html部分 获取ajax数据的两

爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider)

爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔... Day 1小莫想要某站上所有的电影,写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影列表页面,根据 Html 分析电影名字存进自己的数据库.这个站点的运维小黎发现某个时间段请求量陡增,分析日志发现都是 IP(1.1.1.1)这个用户,并且 useragent 还是 JavaClient1.6 ,基于这两点判断非人类后直接在Nginx 服务器上封杀.

爬虫反反爬虫:转

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:xlzd链接:http://www.zhihu.com/question/34980963/answer/60627797来源:知乎 爬虫自动换User-Agent在代码实现上只需要一句就够了,并不是什么高难度的技术活.爬虫为什么要换不同的User-Agent呢,无非就是为了模拟浏览器,让服务器不容易识别出自己是爬虫. 对于爬虫,其实上上策是爬网站之前先去读一下网站的『robots.txt』文件,看看网站开发者(或网站主人

反反爬虫 IP代理

0x01 前言 一般而言,抓取稍微正规一点的网站,都会有反爬虫的制约.反爬虫主要有以下几种方式: 通过UA判断.这是最低级的判断,一般反爬虫不会用这个做唯一判断,因为反反爬虫非常容易,直接随机UA即可解决. 通过单IP频繁访问判断.这个判断简单,而且反反爬虫比较费力,反爬虫绝佳方案.需采用多IP抓取. 通过Cookie判断,例如通过会员制账号密码登陆,判断单账号短时间抓取次数判断.这个反反爬虫也很费力.需采用多账号抓取. 动态页面加载.这个考验前端工程师的功底,如果前端写的好,各种JS判断,各种

简析爬虫、反爬虫、反反爬虫之间的抗衡

爬虫的类型分为:通用型爬虫.聚焦型爬虫. 通用型爬虫指的是搜索引擎, 聚焦型爬虫指的是针对哪家网站做针对性的爬取. 接下来分析一下其各自的手段和方法. 反爬手段:IP频率限制,在一定时间内对服务器发起较高频率的网络请求的IP. 用户信息,需要用户名密码及验证码的验证, ajax异步请求,页面无刷新 投毒型,要a给b 诱捕型,多层级存储文件 爬虫:IP代理,IP池,降低频率,模拟用户信息,模拟浏览器, 由爬虫引出的反爬虫.反反爬虫之间不仅是各大公司财力的抗衡,也是优秀的爬虫工程师之间技术的较量,

爬虫案例—中基协数据爬取

因为工作原因,需要爬取相关网站的数据,包括中基协网站和天眼查部分数据. 一.中基协网站 爬取思路: 1.查看目标页:http://gs.amac.org.cn/amac-infodisc/api/pof/manager?rand=0.9775162173180119&page=%s&size=50 发现有随机数字串(刷新反爬措施),以及页码和每页信息条数,可以用来拼接爬取url 用一个循环爬取所有展示页面,用到requests库以及random函数生成随机数 返回的是json数据,直接用r

反爬机制及反反爬策略

1.UA检测 UA,即 User-Agent,是HTTP请求头部信息的一个属性,它是用户访问网站时的浏览器标识,可以通过审查元素或者开发者工具中看到.一些网站通过检测UA从而确定请求的对象是脚本程序还是正常的用户通过浏览器请求,实现反爬虫的目的. 反反爬策略:构造自己的UA池,使得每次用程序向网站发请求时都随机带上正常的UA标识,更好的模拟浏览器行为.有些网站还会有反爬时间或者频率的限制,因此,最好可以再设置一个 timeout ,最好是随机休眠,Python中可以使用 time.sleep()