记一次失败的素材解析网站搭建过程。以及失败反爬虫经历
之前在做小程序的时候需要一些素材,到国内某素材网看了后想下,发现需要购买会员。但以往经验告诉我,像这种可以去某宝解决。果然,随便搜一下关键字“素材”,“某图网”,一大堆商品,做这个的真多,随便点开一个顺眼的看。商品分类也是琳琅满目。有包天的有包次数,还有终身等等商品组合。居然还是联合国内十几个素材网站都可以随便下。价格也不贵。像这样之前买的时候有1块前,20次的。现在感觉都涨价了。可能事跟我接下来的事有关吧。
像我这么抠的,像我这种不是专业的设计,只是找下素材而已,当然是选择最便宜的那种。于是我买了个一块钱的。是的,我买了好几次。好几家,都是同一个套路。自动发货,给你账号密码,和一个店长自己的网址,里面有个输入框,输入素材网址就可以下载了。对于我们这种不是专业的设计人员,临时需要素材还是很有帮助。
于是最近,突然想自己也搞一个这样的网站,自己把套路想了一遍,买会员,爬虫解析。于是网络上好不容易找了一个看上去很精装的网站。我之前遇到有店家用过这套模板。长这样
真的是好不容易找到的。特地FQ去谷歌找,都是在一些什么资源站找的,有收费有免费,越难找。给我感觉价值好像越大。但后面的经历让我知道,天下没有免费的午餐。
找到源码后,发现是php,一般都是。 网上发布的时间是19年年底。用的还是最新的thinkphp6框架 。现在想想估计是为了年末收一波韭菜。我深知这玩意肯定有后门。。但我先是买了香港服务器。阿里买的轻量服务器,24一个月。。一通配置后,先在自己电脑跑一下。php运行还是挺方便。打算一行一行看源码,没多久就放弃了,php也不熟,看了一会就觉得这策略不对,全局搜了下没有可疑关键字,基本就放松了警惕。
这种解析网站,流程就是必须自己拥有平台会员 -> 获取cookies -> 自己的服务器解析-> 解析的下载地址发送给客户端。
接下来,就是去忍痛买一个会员。想来想去,先去购买 某图网的一年198 。感觉是国内目前最大的素材,就算失败了也不会死的太惨。会员到手后。登录->获取cookies
正准备把cookies 复制到网页后台时,从我职业的感觉上来讲,这里可能会有问题,于是在提交cookies 这个的地方 ,仔细审查了下代码
在对cookies增删改查的过程中都会发送http 给到一个服务器。这个http_post 方法基本写死。就是给某个设定好的ip地址发送数据。 于是我把这个方法改了,并全局都注释了。再决定用正则找出全局有ip的字段。全删了。
又一通检查后,填写好cookie后,准备解析时,发现不行,原来这个源码根本不提供解析功能,解析也是同样通过 http_post 去第三方,可能是作者的服务器解析。后来想想,这样做也有一定道理。解析策略有可能会变,这样就可以保证统一维护,代价可能就是你的账号被共享。
后来只能自己解析,发现解析真不难,是完全暴露下载地址,用python 开了个简单解析接口,准备用作本体去请求。能够解析后,万事俱备。准备做着发财躺着赚钱的梦时...
随之而来的问题是..那个某图网 居然有对账号下载检测,只要连续下载多次,很容易就出现滑动验证,或输入验证码啥的。
之前担心的事果然是真的。如果同时多个用户在爆我这个VIP号。那分分钟出问题。没办法,裤子都脱了,钱也付了,不能就这么算了. 想了一个方案: 滑动验证,可以通过python解决,验证码可以发给到客户端,让用户填写,再回传给服务器。
接下来就是对抗滑动验证这个难题。之前没弄过滑动,打算用 selenium + chromedriver。毕竟这玩意其实就是浏览器运行,现在想想还是太年轻。
一通巴拉巴拉配置。设置cookies ,打开下载页。滑动验证检测出了我是用 非人类的方式。 拒绝我滑动。
上网搜索类似的问题,都是说被反爬虫了。解决的方式无非是修改特征码啥的,我大概试了下,都不行,什么提前修改navigator.webdriver 等特征。
或是修改浏览器被控制的那个提示
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation']) 或是使用 pyppeteer。也不行。
后来只能去翻翻官网的代码。看看是哪里被检测出来的。
发现弹出滑块操作时,会请求一个api。用来验证你是不是 机器人吧。
如果返回code == 400 就可以弹出滑块。而我用chromedriver打开的都是800
所以确定问题是出在 这个api上。观察了这个api,只附带了3个参数:
就是参数v,会变,继续查找v的构造方法。
发现方法是请求 alicdn上,说明这玩意应该是阿里的反爬虫。再来看构造的方法。getNVCVal()
方法里的o参数是window 。而NVC_Data分别存放了appkey,token,scene,trans,__nvc__umid。经过排查发现这几个基本都不会变化而且与正常浏览器行为一致。
(token只是时间戳+一串随机数。appkey:可能是浏览器唯一标识符吧)
继续观察返回的其他相关值,在控制台分别打印后,基本都是undifind。正常浏览器也一样。所以排除。只剩下 2 个参数不固定。
NVC_Result.nvcPreRes.co 其中 s.LogVal = "_n"所以 => o['_n']
其中 NVC_Result.nvcPreRes.c是通过请求api获得。
请求参数都是有迹可循的,没什么问题。
那就剩下最后一个参数 o[‘_n’],只要把这个弄清楚了。问题就通了。
下断点。一步步调试,最后进入到这个方法。
在进入到e这个方法
蒙圈了,整个文件上万行,这个方法都估计好几千行。单步调试根本行不通。这代码不是给人看的。。我只能大胆猜测是跟:
这串玩意有关,因为方法中多处出现类似这种常量值。而这个可能就是爬虫的特征值啥的。并且这个方法隔一段时间就会被调用。所以 o[‘_n’]的值也会一直变化。
前台收集这些特征值后,发给服务器验证,如果能攻破这个方法,自己打造正常的o[‘_n’]值,问题就应该解决了。不过小弟能力有限。做出了个艰难的决定。关闭浏览器。关闭编译器。打开知乎,分享。素材解析站失败落地。。现在反爬真实可怕。有点下不去手。
真佩服那些淘宝的,他们是怎么做到可以支撑那么多用户下载,应该不只是靠一个账号就能解决的。当然,如果牛逼可以破解这套反爬虫,理论上有可能实现一个VIP账号行走天下,不过谁又知当下载量多了后,平台会不会封了你的账号呢?况且还有其他十几个素材网站。搞一个就够呛了。如果真的是自己掏腰包买会员,那成本可有点大。或许就是通过这个所谓的源码分享,盗取你cookies。获取很多cookies 后再动态分配。
有意思的是,我后来再去找之前购买的那些淘宝店家,不是下架了就是关门了。。。这估计就是跑路了吧,所以奉劝各位千万不要想着买里面的终身会员,时间久了肯定割韭菜跑路。。这行水深。可怜我那刚冲的vip年号198元。 各位大哥谁要买呀。我打个8折。2月3号买的。
我看过了,可以换绑手机和登录qq。就是说可以换个一干二净。是安全的。实在不行咱可以走淘宝。顺便留个微信。各位大哥要买的加个微信,我只有一个VIP号:
----------------------------- 谢谢分享你的经历 没想到水这么深 刚最近有个想法想搭建个素材类网站,越了解水越深,感觉搭建容易,维护难,有空可以讨论下 还好没买. 最近刚好在看看解析网的运行逻辑,感谢前车之鉴 小白劝退
页:
[1]