爬虫的第一步是定位目标接口,在浏览器采集的时候,常用的抓包方式有两种:
chrome,edge,safari,firefox等主流浏览器都自带了浏览器调试工具,通过f12等方式可以打开调试工具,打开network面板即可获取到所有数据流,从中筛选出对应的接口即可。
打开调试工具会有明显的标志位,例如console.debug等检测,遇到强风控的网站可能会直接触发风控,常见风控表现例如无限debugger以及登录和验证码页面。
可以使用小黄鸟,茶壶以及mitproxy等工具进行全局抓包获取所有数据流,从中筛选出目前接口。
抓包软件的tls指纹和浏览器不同,遇到强风控的网站可能会直接触发风控。
自写抓包工具,魔改tls指纹通过检测。
对于在接口没有设置风控参数以及风控逻辑的网站,找到目标接口就可以直接编写代码获取数据。
对于具有风控的网站,我们需要对目标参数进行破解,常用的破解方式有以下几种:
风控参数可能是一些看似随机的字符,例如:
js'Af-Ac-Enc-Sz-Token': 'DtzLJcErEbyvMPG+Z74Qdw==|7z69St0L+1WKSd/rIQUgoCAwyjAzGvGfo1ysoxvms9h11vATqJnP6qCuOhbPgdAR/BTt6PK+RG8=|k2/nAbYy+9QZPMZD|08|3',
"x-sap-ri": "a1832468fe062245cb4de73a06014cd83b606335b1a7bc304caa",
"x-sap-sec": "SBgZKa1YYzmxyyiZZwcNasEQyOPNasaBwnz1y0GKswRUAGsVaeDgrasQrfi4MPDCP/M7ywSh7mnsmYlpikXZqW3x7IcnYHwmItZcdJPbNTgMcqn2Y0EgTn8qrvkSQVNt66Uf6mPZBTeBRHvLxqc8fp+k2tnUsonZ9V0zSkbv5SQyEsOpA1Rvcv3iGDaNYDV5wllP7yWZCRlCCQgir2f9nG4FPC/C/Mya+mNQffDFi2LQkYmaTCwzXev0jMhlzlkUV6gF0ZBaE6ERpu9yzAjyti+C+2Zj4J39xGrdzQNCYl4z+hZGJnqEiQTf6fnDrNZt1V0IoZr06g+g6yC/EEHuiuqqXy9KUX6fqWVX+HXNG7dPDqw3FUJ9NLXDb2MZHhG4CtWwrRSgHqU+R5/OUCakrs6N4WP073wYoaJ+mJZEb+okYHpL8422aO38k6qb1qWJM3LvSF3sY1h+0U7wVQJJ+vAhGCsQ+ErJ1tcwBe608biBXJ2DpQPoOlHBoepOH/bPxLrF1tVW8D/JmvP4ONSchWCdi7SoSuHXZM4wMDxoOnrjqKSOoNE9cpaGYVDaefGB1WQmBPqywyRZlZc8naIEboi/f/DzJ3w63aD8Q5qkSW37p4WB+SlkRMG21u7HWsiCkYUHFQ7BmO51xrlNJmyBeksqClS9sI7Uo4dJsHy1br5Is26mDta8rEuehAQKmuPT79EmuhcZur/77mfd+aucS4riHpshuI/2UEjOoJlDI9NKg+h/a4VnCL3OX6DwfigE8XlXpVESvWBk9uqn0gxQ82fBb5iw0rQ6ZBmpSldSK1Fu99xPgsodoOng3F+qqC7hwe36HvveOEndzIFVpfPf4ts0Qk+Zlf7se5UVEZirEzq0sV8grByKh4iA45luGil0BVHNE4HOR0bBtx74y5Bfz2C195HOFuKdhYlQD6KUGGPOgyZD/NHk9pJZZ//qv4uFHl09n1Zfo0wWjURyQWOhGKnRWRjBSdnYvyne2RsWR7DOFFblv1dcLJJPIwsjMlMbo+2tCfeGecc3w2MxlJu3Q1zA76x8LFemNyFdiCz622+O3re8RWx1d/Bqf7hwH4jonFVXnYBV39zxA5iIq0KfUwtMR8B+ykDKgE3NaSF5SVrmqRGd+ynAwG49B5KryRzOo75mWUzrDmJLfnRHbKd3wVQlw3DZY2CQ2rmafnFBSriz/xkYy+g7ogdDJl+XN8+PmIHM4tAGjSqMnwqGVBMI6JNXYG5IeUluAFGcf+II7+JZbZboniSU/ilhDO1B6ktUprM1ezyX6cPe0TR1GLniFHSiw3kffcXkr1u0J9uHsCwnjcFNZYD29uOH1XcMpLrOroyQEQadPxV6LCWPbW43JsYH0MOjg/5uNaT88Z4bFIUUKCxj8CAbk3+HJdkFAe2MKnqQyCISgMcDbJxzPLTRlT17eso8OXXZo+DflkHCeQvLJLwCRUaDAe3Htv4poqbajzag377GOg14PXrX38zsHHFXOsDU8I5Tf1TDrm5Yn8Vb2u9PjDYfKqmpxYpdQYcjCf0wD/Oyltmi2JngAJkLMxmU1PrP4s/egLzBXYRTXgVzoe+ZGWNk+5KP0SXgeAZ4SVOZzFSJboM8feWDdx63PS587oFgeJGlN4x5RbFHbHOzfe8jkv5KcSbF6VtfLJMw+4U+dotoxVPWTZO9kG06Hg8YR7EoU/0HekDj2OuCPQc8ZbfC7k2yZJNUZL0zSEQ+06yf9FSYvO+vDrqfG8ojuXkwqMTAuP1ACl4oYM2OGiakwXr3wi1ZXMXLurdA9g1LANyPtg0ztr1OTMqLwfdJvQTg8fbHUDz5qry9uj0KXDq5ABTGU8YT1M9zXJSl9WXOXX63XrVSCfk3wJSKAgYVtm6HXi0TDi0inDjSnDaH3Gm7Jorn"
我们需要用java,js,python等高级语言对风控参数进行解析,还原,达到获取到数据接口的目标。
生成参数后,将生成的风控参数用于实际的接口请求,观察是否能够成功获取数据。如果不能成功,需要重新分析参数规律并调整算法。
纯算法还原需要很强的逆向分析能力以及时间的投入,并且网站的算法和混淆可能是日级别的更新,这个时候我们就需要考虑别的获取方式,rpc调用是一个不错的选择。 根据目标网站的通信协议,使用 WebSocket 客户端库(如 Python 的 websocket - client 库等)建立与浏览器的 WebSocket 连接,浏览器收到请求后,会在其运行环境中生成风控参数,并通过 WebSocket 返回给客户端。客户端接收这个响应,从中提取风控参数,将其用于后续的数据接口请求。
介于rpc和纯算法还原中,还存在一个折中的方案,那就是补环境的方法,这个方法是利用nodejs模拟浏览器的dom和bom环境,运行目标网站的风控代码生成参数。
补环境获取风控参数的方法需要对目标网站的风控逻辑有一定了解,并且能够灵活运用Node.js的工具库来模拟真实的浏览器环境。这种方法在实际应用中可能需要不断调整和优化,以适应目标网站的变化。


本文作者:回锅炒辣椒
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!