前言
工作原因之前接触过爬虫这块技术,因为爬虫身为Java工程师的我不止学习了python,还入了易语言的坑。
在网上看到各类爬虫示例虽然都是比较大的网站爬虫经历比如:前程、拉钩、网易、百度,腾讯等大厂。Java程序员业界技术顶峰应该是阿里(至少我是这么认为,哈哈因为用到过好多阿里的工具包大爱)居然没有看到一篇关于淘宝的爬虫(即使有评论下面也给出了失效的答案)兴趣使然开始了解阿里的反扒。通过网友反馈了自己实践确实阿里的反扒是业界领衔者。无论是mitmproxy + python ,还是Java httpUtils ,亦或无头自动化测试 Selenium 淘宝都能做到很好的反扒。也有很多网友说修改Selenium属性可以绕过js检测,花费很多精力成功了突破这个难点难免会出现新的检测机制,毕竟Selenium的初衷是为了自动化测试,并不是为了爬虫而生。有没有一劳永逸的方法呢?
灵光一现!既然正常的浏览器能访问,我可不可以通过读写内存操控浏览器实现爬虫功能呢?我瞬间想到了易语言,开始入坑
环境准备
易语言开发环境5.8,精易模块,Mysql数据库,IE11浏览器。工具下载 精易论坛,或者吾爱破解。PS (楼主用的是52的工具包)
精易模块,是易语言网页填表基础的封装。这里并没有使用精易web浏览器组件而是直接用的IE浏览器,因为精易web浏览器也无法通过某宝的检测。
进入开发
万事开头难,操作IE浏览器最重要的是获得IE浏览器的webView句柄,这样才能对他进行读写
这里使用了windowapi FindWindowExA
···
.版本 2
.子程序 窗口取句柄, 整数型, , 本子程序采用【精易编程助手】生成,成功返回窗口句柄,失败返回0
.参数 参数父窗口句柄, 整数型, 可空, 如果是取顶级的窗口句柄请留空
.参数 参数子窗口句柄, 整数型, 可空, 如果是取顶级的窗口句柄请留空
.参数 参数窗口类名, 文本型, 可空, 窗口的类名
.参数 参数_窗口标题, 文本型, 可空, 窗口听标题
返回 (FindWindowExA (参数父窗口句柄, 参数子窗口句柄, 参数窗口类名, 参数窗口标题))
.子程序 功能取句柄, 整数型, , 本子程序采用【精易编程助手】生成,成功返回窗口句柄,失败返回0
.局部变量 局句柄, 整数型
局句柄 = 窗口取句柄 (, , “IEFrame”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真结束
局句柄 = 窗口取句柄 (局句柄, , “Frame Tab”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真结束
局句柄 = 窗口取句柄 (局句柄, , “TabWindowClass”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真结束
局句柄 = 窗口取句柄 (局句柄, , “Shell DocObject View”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真结束
局句柄 = 窗口取句柄 (局句柄, , “Internet Explorer_Server”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真结束
返回 (局句柄)
···
问题一
运行ie就是精易 填表的一些简单操作了,存在问题目前版本的精易模块似乎无法触发页面的事件,例如鼠标进入。展开首页分类
解决方案
模拟鼠标移动事件,触发浏览器JS。