2016-4-25-反爬与小思考

今天主要讲讲最近碰到的那个反爬网站,我当时的心情真的是:

日了狗了.png

让我们来回顾一下我们和这群正在招月薪3w反爬工程师网站的斗智斗勇。。。

事情是这样的,首先我们开了个大创项目,正好老师底下有个学生做毕设是做股权分析的,于是就顺带把我们现在做的这个大创项目就弄的和学长做同一个方向了:目标主要是爬取网站得到所有A股上市公司的股权信息。

当时我们心情是:

美滋滋

组里两个人都写过scrapy的爬虫, 什么大风大浪没见过对吧(开个玩笑)

不过这学长是真坑啊,连着那网站也坑,两坑加一起....

首先学长都没说具体到底要爬哪些公司(一开始都不知道是A股),一看到那网站,我们就懵逼了:

天眼查网站:

天眼查

这东西只能搜索然后查找啊, 这..这..这...何从爬起啊?它根本都没提供一个所有公司的展示界面啊???

黑人问号

我们随意搜了搜,看能不能找到全部公司:

公司

哼哼看来人家又不傻....

紧接着看到了这个:

会员服务

当时就懵逼了...这要是我们真有能力把它所有的公司都抓下来,这个网站不就倒闭了...还搞个啥会员服务呢??!!

果不其然,一位同学搜了搜招聘网站:

反爬工程师

当时心里头万头草泥马奔涌而过啊...这我们拿着5000块钱的资金,去跟一个企业一群月薪3W 的反爬工程师做斗争呢?这还玩毛啊...还拖人家数据库,到时候会不会人家把你举报了都不知道,算了算了,当时想着学长这毕设估计要 gg了...

但是没办法,该爬还得爬,怎么爬呢?我们准备细心观察每个企业的url结构:
结果是:
根本没有任何规律
百度的url:http://www.tianyancha.com/company/22822
但是 http://www.tianyancha.com/company/22823 就没有任何企业是这个url。

说明一堆堆的企业好像被随机分派在了0-100000000000(11个0)的范围内..

胖哥一声令下:这还不简单,遍历下就好了(单纯的我们大概根本没有这个概念:想把一个几百十号人靠这个吃饭的数据库拖下来哪能是我们三个单纯的大三生能干的。。)

看了下网站结构,得开启selenium+phantomjs神器,于是,就开始愉快地爬取啦!!

爬取的是很愉快,但是速度感人呀:
算了算,如果碰到url找不到企业,大概是1秒1个,如果url找得到企业,抓取信息下来大概是5秒一个,机智的我按了下计算器:

100000000000/3600/24/365 = 3000左右

卧槽,我们在一切顺利的情况下只需要爬3000年就可以爬完哦!!!!3000年爬完哦!!!爬!!完!!哦!!!

= =

哇说不定我们开多个进程,再搞个分布式可以缩短到100年呢,真是美滋滋...

而且“高兴”到一半,突然爬虫GG了。。。

出现了图片拖动验证码...

爬了十几个,就出现了图片?验证?码?

机智的胖哥立马搜了搜相关方案:大致解决方法是模拟鼠标去把那个图片拖动到合适位置(一句话就讲完了看起来很简单的样子)然后看了看那几百行的代码我们决定:!放弃!...

于是我们决定利用ip池来进行爬取:随便google了一下就找到了几百个免费的代理ip,方便的很.发现换了ip之后,终于可以跳过验证码的验证界面了...松了一口气,也就在这时,学长跟我们说,不用爬全部啊,主需要爬A股,让我们的信心都为之一振!!

说做就做,于是我们又开始嗖嗖嗖地爬取:首先在网上得到A股名单,然后在天眼查搜索企业,然后点击进去进入该公司网站,然后开始爬取!!
一切很顺利,直到............

我们发现,爬下来,确实是没什么问题,但是....这数据特么是个假的!!!假...的....假...的....

如下是爬到假数据的代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


dcap = dict(DesiredCapabilities.PHANTOMJS)  # 设置userAgent
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0")

obj = webdriver.PhantomJS(executable_path=r"/home/jack/Downloads/App/phantomjs-2.1.1-linux-x86_64/bin/phantomjs", desired_capabilities=dcap)
obj.get('http://www.tianyancha.com/company/22822')
time.sleep(3)
print obj.page_source

来我们来看看原网站:

原网站

来我们来看看我们爬到了些啥:
工商注册号:440104113453756(这特么什么鬼)
行业:消防(我要砸桌子了)
....

以下不列举了...

假的

我当时只想:

报警

这还玩个蛇皮...

大家开始到网上搜寻解决方案, 我也赶紧问了问最近在知乎上捉到的@waking_up 一个自称小白的大神, 结果三个人都无果而终....好像剩下的方法就只能试试抓包?

终于学长在此时没坑,给出了一波给你的助攻:换浏览器ua:

果然,在换取浏览器ua之后,千辛万苦我们终于可以爬到了真实数据!!

简直要喜极而泣..

然而...

我们发现,当我们直接访问例如:http://www.tianyancha.com/company/22822 网站时, 给的是真实的数据.然而,当我们为了批量化处理, 是这样的处理的:首先从网上获取所有A股名单, 比如我们找到了百度, 然后我们在主页利用webdriver模仿用户行为:

主页

搜索百度:

然后模仿用户行为,点击第一个链接:

百度

之后,我们又GET了数据!!!假!!数!!据!!!

此时内心是崩溃的....

好气啊,想砸桌子...

此时又发现消息: 学长给的A股信息是假的,假的还不说了,一些简称在天眼查底下根本搜不到(比如"ST东北高")...

假的

意思是即便我们用了合适的ua头,但是只要利用phantomjs模仿用户行为,比如点击什么的,就会被侦测到!

无可奈何....

没办法本来也只是想把爬虫作为工具,并不是什么以后想要专门搞这个的,WEB基础也不够,就没打算深究机理了....(也深刻感觉到了时间有限, 应该把时间放在自己的那个方向上,其他只是作为工具而已,能利用就利用)

于是我重新google了下企业A股名单,然后发现虽然可能有些简称搜不到,但是企业的编号是可以搜到的.在天眼查里搜编号就好了..

然后我们换用了移动端的表头:
惊喜地发现(终于这一次是惊喜了):移动端没有任何反爬措施,连验证码都没有!!!

所以也提个醒吧,如果发现WEB太难啃的话,直接把ua头换移动端就好了..

好了这是倒今天为止的进度,具体项目完工后会写一篇正式的稿子的,这里只是记录一下辛酸史= =真是心累啊.....不过也很佩服, 反爬与反反爬的过程还是很有趣的,仿佛是在斗智斗勇2333

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 起来越有秋天的味道了。凉风习习,吹得让人舒服快活。我很喜欢很享受这种感觉,清风拂面,吹走了所有的不悦与疲惫,让人全...
    流浪痴人阅读 258评论 2 1
  • 婆娑小雨漫起层层轻雾,乌衣巷半隐半现在雨纱里,安静、温柔。 夕阳在巷口洒下点点余晖,金色的粉便涂刷了整个世界,铺天...
    陆星渊阅读 435评论 6 6
  • 公交车上的人们有几个类型: 急性子的人们。 司机是个急性子,到站开门投币的瞬间,只听见公交司机大哥喊,快点快点,还...
    笔尖儿爱写作阅读 521评论 2 5
  • 越是没钱的人越不在乎钱,越有钱的人反而更珍惜钱 这句话打到我了,想想我长久以来的投资观,都是有极大问题的 拿15年...
    张学安阅读 186评论 0 0