今目标爬取策略

今目标爬取策略

破解过程

破解今目标有几个方面要注意的:

  1. 要用模拟登陆的方式才可以进去今目标的网站从而获取想要的数据
  2. 在破解的时候,遇到反扒策略,登陆密码用到了sha加密算法
  3. 破解登陆之后我们要怎么获取相应的内容

首先我们打开今目标的官网

image-20210820121848672

我们只能登录过后才能获取到我们想要的数据,这就涉及到模拟登陆的问题了

我们还是按照老规矩一步步来分析先,先点击登录按钮,然后打开f12,去抓包看看,模拟登陆的样子

image-20210820122143387

打开之后首先是这样的,然后打开我们的f12,记得把这个也勾选上,不然有时候可能有一些包获取不了

image-20210820122255667

然后我们再去进行一下模拟登陆,看看抓到的包的内容是什么,这里我们采用一个虚拟号码和虚拟密码用来测试

账号:13060993333

密码:123456

然后我们点击登录

image-20210820122423512

这时候我们就可以抓到对应的包

image-20210820122447560

把这个包拉到最下面就是我们需要进行模拟登陆的post请求参数

image-20210820123147608

红色框框就是我们要进行模拟发送的参数,

username就是我们的账号

password就是我们的密码,熟悉密码学的人都知道,这一串是sha来的

接下来滤清思路就好办了,只要我们把这一串sha加密算法进行一个解密的过程,那么我们的请求参数就破解好了,然后再进行模拟登陆最后就可以获取到我们想要获取到的内容。

对于这种我们有两种方法

  1. 用js进行逆向解密,相对可能简单一点
  2. 直接调用python的hashlib库进行解密,如果完全没有js基础的话,还是我还是推荐第二种的,毕竟第二种是会用python的库就好了,也看的懂,不像第一种就算会逆向解密的方法,也看不懂为什么要这样解密

好了,废话不多说直接上代码,其实代码就一行就搞定了

因为是摸清了它采用的是sha加密的,所以首先我们先导入hashlib库,然后直接调用hashlib库来进行暴力破解就好了,因为库别人都帮我们封装好了,所以知道怎么使用就好了

image-20210820141547581

先调用hashlib中的sha1库,然后对传入的参数进行编码最后求出来的参数和我们刚刚看见的加密参数是一模一样的,也就是证明我们破解正确了

image-20210820141743715

在破解好我们的参数之后

我们用session方法来包含我们需要进行模拟登陆的页面,session就是用来存放cookie的一个容器,请求成功之后就会返回我们熟悉的一堆html源码了

image-20210820142149700

下面就是源代码了

import hashlib
import requests


def login():
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
    }
    session = requests.session()
    session.headers = headers
    url='https://sso.jingoal.com/oauth/authorize?client_id=jmbmgtweb&response_type=code&state=%7Baccess_count%3A1%7D&locale=zh_CN&redirect_uri=https%3A%2F%2Fweb.jingoal.com%2F'
    data={
        'login_type': 'default',
        'username': 13060993333,
        'password': hashlib.sha1('123456'.encode()).hexdigest()
    }
    html = session.post(url,data=data,headers=headers)
    if html.status_code == 200:
        get_html(session)
    else:
        print(html.status_code)

def get_html(sess):
    response = sess.get('https://web.jingoal.com/#/workbench?_k=6y48ik')
    content = response.text
    print(content)

if __name__ == '__main__':
    login()

小结

其实对于爬虫工程师来说,解密都是家常便饭,比较只要是一个常见的网站都会多多少少涉及到一些加密的算法,而我们想要获取到数据就必须要对其进行解密,所以我们常说算法是每个程序员必备的技能之一,因为你写后端对你的内容进行加密需要用到算法,而你写爬虫的时候也需要算法去破解别人的加密内容,你要是从事数据分析或者数据挖掘更多的就是考验我们对算法的灵活运用,哪怕你去面试工作很多时候都是考验你的算法能力,所以有空还是得去多了解算法才行。
备的技能之一,因为你写后端对你的内容进行加密需要用到算法,而你写爬虫的时候也需要算法去破解别人的加密内容,你要是从事数据分析或者数据挖掘更多的就是考验我们对算法的灵活运用,哪怕你去面试工作很多时候都是考验你的算法能力,所以有空还是得去多了解算法才行。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有猫腻妖

你的鼓励是我更新的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值