首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于某东的登录

关于某东的登录

作者头像
andrew_a
发布2019-11-28 16:31:25
4410
发布2019-11-28 16:31:25
举报

关于这个网站的登录,百度谷歌一大推。然后呢,我就都试了一番。最后发现只有扫码登录最靠谱。

第一种:直接请求

第二种:selenium 模拟登录 (第二篇文章)

第三种:扫码登录 (第三篇文章)

第一种:直接请求

点击登录会发送请求,参数看上图

实际提交的参数, 看下图,图中圈出来的基本都是可以找到的,就在请求的 HTML 中。

而 fp 参数和 eid 参数实际是固定的。所以可以直接写死。看到了一个 pubKey ,我觉得看到这个玩意基本都能猜到这是一个 RSA 加密了,加密的就是 密码了,

然后还有一个 seqSid 参数 和 一个 authcode 参数

seqSid 参数是个接口返回的响应内容,全局搜索 _jdtdmap_sessionId 就会找到这个接口。

authcode 这个参数就是滑动之后生成的参数,也是最恶心的一个参数。

authcode 参数来源:

请求 URL:

参数:

响应:validate 就是 authcode

这个请求参数中实际只有 d 参数是最重要的,其他的就比较简单了。

c: 是获取验证码图片时返回的 challenge 参数。 slide/g.html

bg 和 patch 就分别是背景图和缺口形状的图片

识别这个距离的代码,是从网上复制的,忘了是从哪里来的了。

    def test_demo_cv2(self):        """        得到缺口位置        :return:        """        block = cv2.imread("bg.jpg", 0)        template = cv2.imread("patch.jpg", 0)        w, h = template.shape[::-1]        # 二值化后的图片名称        blockName = "block.jpg"        templateName = "template.jpg"        # 将二值化后的图片进行保存        cv2.imwrite(blockName, block)        cv2.imwrite(templateName, template)        block = cv2.imread(blockName)        block = cv2.cvtColor(block, cv2.COLOR_RGB2GRAY)        block = abs(255 - block)        cv2.imwrite(blockName, block)        block = cv2.imread(blockName)        template = cv2.imread(templateName)        # 获取偏移量        result = cv2.matchTemplate(block, template,                                   cv2.TM_CCOEFF_NORMED)  # 查找block在template中的位置,返回result是一个矩阵,是每个点的匹配结果        x, y = np.unravel_index(result.argmax(), result.shape)        cv2.rectangle(block, (y, x), (y + w, x + h), (7, 249, 151), 2)        cv2.imshow('block', block)        cv2.waitKey(0)        print("x方向的偏移", int(y * 0.4 + 18), 'x:', x, 'y:', y)        return y

但是有时候不准确。

w: 验证码的宽,固定 280

appID: 固定值

product:固定值

scene: 固定值

e: 固定值

s: 全局搜索 _jdtdmap_sessionId

都是页面中值。

最后说一下 d , d 的位置:在 slide.js 中,名字中间有版本号,没写

g 的值

这也就是轨迹了列表了,对轨迹列表进行加密生成了 d 参数

轨迹列表的特点:

第一组,坐标 x 是固定的

最后一组 x - 第一组的 x = 滑动的距离

y 的值变化很小

生成轨迹的方法很多,但是好像能百度到的都没有什么用了。

生成轨迹列表后,传递参数到加密的函数中,返回加密的参数 d

加密的函数位置:

复制出来,稍微改一下就可以使用 python 直接执行了,我用的是 execjs.

基本到这里就结束了。

但是,我生成的轨迹基本没用,通过不了,百度了好多也没用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫scrapy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档