文章目录

  • 前言
  • 1. 感谢有你
  • 2. 爬虫逆向那点事
  • 致谢

前言

在这个江湖
除了黑与白的攻防
还有爬与反爬之间的对决

  转眼已是四月,时间总是在不知觉中悄悄流逝,面对已经过去的三月,含泪说一声再见。最近很长一段时间没有更新任何动态,泪咽却无声!三月它带走了很多东西,它也带走了最爱我的人。讲实话最近心里总是充满着失落、无力感,没有心思做任何事情。有时感叹意外为何总是来的这么突然、那么毫无征兆!既然三月的风没有吹散雾霾,那么就让四月的阳光洒满大地吧…

1. 感谢有你

  其实这一篇文章在3月下旬就应该完成发布出来的,当时主要也是想写一写逆向相关领域的一些东西,依稀记得那天下午我写到结尾的时候,接到了一个让我为之一颤的电话,这个恶耗打破了我宁静的生活,瞬间让我的大脑一片空白!立马从北京赶回到了我的家乡湖南,直到最近才慢慢处理好忙碌的事务。那晚,我记得我在深夜发了一条Blink,直到今天上来看才发现很多朋友给我的评论留言。看到你们字语中的鼓励,在这个春天里,没有什么能比这些更暖了!

2. 爬虫逆向那点事

  在爬虫这个领域内,现在很多招爬虫职位的企业招聘要求上多少都会带上点逆向的东西,其实企业它招一个爬虫工程师进去了也并是一定要强制让你用逆向大法去解决某个网站的反爬机制!还有就是爬虫这个职业不掌握逆向相关的技术栈它就无法在这个行业立足或者说在这个行业找到一份合适的工作了吗?答案肯定是否定的!但是,拥有逆向能力及经验的爬虫工程师在这个领域所拥有的核心竞争力还是很强的

  其实我们都知道爬虫入门是一个非常低门槛的事!早个几年如果会用Selenium或者能处理一个滑动验证码那都是算强的了!那个时候一名爬虫工程师从入门到上岗我见过很多自学两三个月到找到工作的。依稀记得当年在这个圈子里,几个志同道合的老友聚在一起经常会讨论一些关于滑动验证码、吐槽一下某某站BT的反爬机制等相关的一些话题。可是慢慢随着时代的进步、科技的发展,数据还是那些数据,站还是那个站,但是在这个坑里的人头发肉眼可见的日渐稀少

  不知道大家有没有看过一些修仙类的小说。爬虫这个职业就好比那些修仙类小说里的段位划分一样

现在很多企业它们招爬虫这个职位的目的是到底是干嘛呢?当然也许可能也会是某个老板心血来潮想让HR帮他找一个能给他爬电影、妹子图片看的爬虫工程师,越是利益所在的地方,就越是布满了爬虫​!这十年爬虫行业造就了无数个新秀企业,我早前在网站看到一个这样的例子前有这么一个团队他们希望通过商品信息的不对称性,做中间贸易。先后向多个电商平台放出大量爬虫,主要获取一些热销的产品、价格变化、评价等信息。最后做投放,期间不断对爬虫进行优化、迭代以及标签属性化,现已是知名跨境DS服务品牌。所以爬虫可以很直观的让我们看到企业在商业环境中,数据的威力!它无论是在舆情、采购、销售、市场、供应链、客户分析…都发挥了很大的作用!

  当然,只有爬虫还是远远不够的,爬虫只是一个工具,而企业需要的是一个体系,这个体系包含了数据获取、数据清洗与治理、数据分析、数据应用、监控和安全、算法优化、规则调优等等一系列的工作…

  爬虫这个职业个人来讲的话,它的综合知识体系涉猎还是相对比较广的。一个优秀的爬虫开发人员手里握着一张布满技术栈的大网,这张网它包括但不限于:网络、语言基础、前后端知识、网络安全、数分、数挖以及逆向工程…

  正所谓爬虫入门简单!市面上关于爬虫领域的质量慢慢正在变低。很多所谓的说起来很高级的“爬虫工程师”解决一些Ajax加载的网站,想都不会想直接都是拿着自动化测试工具配合IP池一顿狂怼。还有一些套路可能都知道!比如JS断点调试、某个参数全局Control+F、可以快速的让给我们找到解决方法及思路,对于新手进阶也是一种进步,但是对于高级一些的工程师或者有经验的爬虫人员来讲就显得有些鸡肋了

  在这个爬虫盛行的时代中为了有足够的能力可与之抗衡,网站方不得不采取任何可行的手段用以防止一切非人为操作篼集数据行为的工作,而在此时,加密、混淆便顺势成了一时之间热门的话题。有时候我个人也在各个平台、站点搜一些爬虫JS、APP逆向相关的视频及资料。发现很多不同的视频、资料都是围绕某一个知识点来炒剩饭!甚至还有一些培训JG甚至拿着网上一些透明的东西来水课程。一些所谓做自媒体的公号各种搬运、互推、引流、出一些所谓的课程,然后就是收收萌新的智商税…不是我吐槽,很多2~3年的爬虫工程师简历上写着熟悉这个、那个…真正到了说说底层实现原理、利弊、应用场景…深究一下基本就…

  不管是现在还是未来WEB、APP应用只会越来越安全,反之企业招聘的要求也会越来越高。我们爬虫工程师对于逆向技术的认知与掌握那是趋势也将是必然的。只有这样,我们在自己的同行领域内拥有核心的竞争力。而企业它们在招人对这一点的要求也间接的能过滤掉很大一部分人。随着开源的爬虫平台跟一些优秀的工具浮现出市场如果企业招人大部分还是不再像以前单纯的只是写写parse

  而在反爬虫中,当前很多有价值、高访问的网站都会采用JavaScript来做反爬,问为什么?因为它靠谱!

  当然,可以模拟JavaScript,抓取动态网页,这只是一个很简单的功能。因为,如果对方没有反爬虫,你完全可以直接抓ajax本身, 而无需关心js怎么处理的。如果对方有反爬虫,那么javascript必然十分复杂,重点在于分析, 而不仅仅是简单的模拟!这只是基反爬的基本功,像JS反爬中一些经常让你掉头发的操作:

    eval----臭名昭著、效率低下、可读性糟糕
    goto----js支持很糟糕、需单独实现
    混淆----目前的minify工具通常是minify成abcd之类简单的名字,有时候对方minify成阿拉伯语!因为阿拉伯语有时从左向右写,有的时候是从右向左写,还有的时候是从下向上写。除非爬虫方雇个阿拉伯程序员, 否则非头疼死不可!
    蜜罐数据----通过更改地址,让爬虫采集到错误数据!但是只要爬虫开发人员针对性的来扫,还是十分容易被检测出来的

  做爬虫就注定着要走上反反爬的这条道路,在我们职业生涯中走过最长的路,就是反爬的套路。之前我碰到一个网站,它是一个国外的航空网站vietjetair这个网站的Cookies是动态加密的,按照一贯基本的套路使用全局搜索大法、再通过Mouse断点调试大法…均无法正确命中断点,换句话说,就是根本无法找到入口。因为这个网站当我们输入起始地-目的地点击搜索跳转的同时已经将加密的那部分代码移除掉了!这个时候我怎么知道Cookies里面的参数加密是如何实现的?要说大海捞针倒还有一丝希望,可是这个针它不在大海里!

任何调试方法都不是万能的!它仅仅只是一种处理方式,在很多时候,我们可能会为一个参数、一个加密费劲心机去找寻一个入口。这个过程可能需要花费大量的时间去调试、失败、调试、再失败、再调试,这个过程会怀疑人生

  做技术嘛!尤其是反爬技术,很多时候难免会触及我们的知识盲区。俗话说得好:大路不通绕小路、小路不通淌水路、条条大路通罗马。如今发达的网络资源它总能让我们在绝望中寻求到一丝契机。

  如上问题!对于Cookies做了手脚的这类操作我们可以使用自定义钩子函数来监听Cookie接口信息的收发、结合Chrome extension实现信息中断与拦截机制。实现方式还是非常简单的

var code = function(){var org = document.cookie.__lookupSetter__('cookie');document.__defineSetter__("cookie",function(cookie){if(cookie.indexOf('关键参数')>-1){debugger;}org = cookie;});document.__defineGetter__("cookie",function(){return org;});}var script = document.createElement('script');script.textContent = '(' + code + ')()';(document.head||document.documentElement).appendChild(script);script.parentNode.removeChild(script);

代码中关键参数正是所被加密的参数当拦截发现到该参数则会直接拦截中断。当然我们的钩子函数编写完以后还需要一个文件用来声明Chrome extension

{"content_scripts": [ {"js": [ "inject.js"],"matches": [ "http://*/*", "https://*/*","<all_urls>"]} ],"manifest_version": 2,"name": "CookieHook","permissions": ["tabs"],"version": "0.1"}

最后将两个文件统一放到一个文件夹,进入到Chrome扩展程序中将写好的钩子函数文件添加到进去

启用这个扩展插件进而可以帮助你捕获到你想要捕获的加密数据以及快速寻找切入口。

反反爬这条路你确定要一条道走到黑吗?

致谢

好了,到这里又到了跟大家说再见的时候了。我只是一个会写爬虫的段子手而已,一个希望有朝一日能够实现财富自由,能够早日荣归故里的游子罢了。希望我的文章能带给您知识,带给您帮助,带给您欢笑!同时也谢谢您能抽出宝贵的时间阅读,创作不易,如果您喜欢的话,点个赞再走吧。您的支持是我创作的动力,希望今后能带给大家更多优质的文章

三月它带走了爱我的人!爬虫逆与不逆如何选择?相关推荐

  1. 爱我的人请别走远(转载)

    月光如水,流泻过每一叶点滴的瞬间.我一个人在静静的夜里,等着天使的飞过.有人告诉我,如果天使飞过这里,你就会找到幸福.我看着树木年轮的增长,看着沧海桑田的变幻,看着滴水穿石的毅力,看着四季交替岁月流转 ...

  2. 心语收集11:我们可以经得起心脏的千疮百孔,可以接受感情的支离破碎,却不愿喝下忘情水,忘记那曾经爱过的人。...

    1.出去走走,别让坏情绪迷乱了世界,慌乱了心. 2.当你长大时,你会发现你有两只手,一只用来帮助自己,一只用来帮助别人. 3.崇拜居于爱情之上,喜欢居于爱情之下,欣赏居于爱情之畔,它们都不是爱情.但是 ...

  3. 里bl2和bl3为什么分开_真正爱过的人,分开,真的会是“好散”吗?

    想了解更多精彩内容,快来关注:老伴儿风停夜泊 情感话题解读,带您走进更多的正向情感世界!我是你的情感解忧人,但你要懂得放过你自己! 文 | 风停夜泊 原创 · 抄袭必究 异地恋3年,后同居2年,分手后 ...

  4. 杂记之罗翔语录:要爱具体的人,而不要爱抽象的人

    罗翔: 陀思妥耶夫斯基告诉我们 要爱具体的人 不要总是想着爱抽象的人 知识分子的一个经常性的倾向 就是我们喜欢抽象概念 我们胜过具象的事物 但是一个越爱抽象人的人 往往越难对具体的人表现关爱 因为抽象 ...

  5. 为何爱会伤人/为家爱会伤人

    原文1:https://mp.weixin.qq.com/s/fHvOC4jlL55zoJ6lwgwgug 原文2:https://www.cnblogs.com/MrFlySand/p/160310 ...

  6. 真爱过的人,不会再有爱~

    真爱过的人,不会再有爱~ 假如又和另一个人在一起,出于男人的责任,只会对她好,已经没有爱,也爱不起来了~~

  7. [转贴]请珍惜你身边爱你的人

    请珍惜你身边爱你的人 whale666 发表于搜房社区-娱乐·生活 hkhy.bj.soufun.com 一个个无情的误解,纷乱了幸福的脚步.当命运的死结终于用代价打开,但,一切都为时已晚. ---- ...

  8. 请珍惜你身边那个默默爱你的人

    一个朋友说,追了她很久的那个男孩今天结婚了. 我说,你想怎样啊,喜欢了你五年你都无动于衷. 她说她去参加了婚礼,新娘很漂亮. 新郎也很帅. 好像第一次觉得他原来也是蛮有魅力的. 怎么当初没发觉呢. 她 ...

  9. 除了爱你的人,这个世界没人会记得你

    又是一年的毕业季,去年的今天我也是匆匆忙忙的毕业,而不是像电视里毕业的很有仪式,又很有回忆,其实感觉大多数的毕业就是匆匆忙忙的.电视只是表现给别人看到,所以会拍的比较有仪式感,增加看点,增加我们的认同 ...

最新文章

  1. iPhone 14 与iPhone 13
  2. 插件制作教程 php,typecho插件编写教程(二):写一个新插件
  3. Java学习笔记29(IO字符流,转换流)
  4. 【机器学习】 - 数据预处理之数据归一化(标准化)与实战分析,正则化
  5. code换取微信openid_JSamp;微信_微信授权
  6. jQuery ligerUI中通过ligerDateEditor设置默认日期
  7. 经验 | 深度学习中从基础综述、论文笔记到工程经验、训练技巧
  8. 简易 Vue 构建--篇二
  9. 【Bug Fix】Error : Can#39;t create table #39;moshop_1.#sql-534_185#39; (errno: 150)
  10. iosTableView 局部全部刷新以及删除编辑操作
  11. inline函数_inline内联函数
  12. java导出excel弹出下载框_JavaWeb导出Excel文件并弹出下载框
  13. html 竖排导航条,html 导航栏
  14. linux cups samba,centos7 安装cups+smb共享打印机
  15. APP自动化测试-Appium编写脚本并执行
  16. 山东理工大学pta实验三四重点题目再现。
  17. 第3章 远程连接管理Linux实践
  18. [1304]求圆的周长和面积(Java)
  19. 微软服务器无法删除不了,[图]Edge无法卸载 引发诸多用户强烈不满
  20. QT 开发板无法显示GIF图片,windows能正常显示问题

热门文章

  1. windows无法查看缩略图的解决方法
  2. 十佳iPhone应用
  3. [年终总结]2019年迈向2020年流水记
  4. 免费代理平台的搭建和隧道代理的使用
  5. qt+msvc+webenginewidgets在全屏状态下,右键菜单失效
  6. win32汇编中伪指令addr和offset指令的区别
  7. 深入理解Java中的不可变对象
  8. 与python的第一次邂逅
  9. 知用DP6150B高压差分探头产品说明书
  10. Mustache 语法