zoukankan      html  css  js  c++  java
  • 爬虫作业时寻找post的地址和js分析

    1、寻找post的地址

      1.1 使用chrome抓包工具

        进入`https://www.renren.com`

        检查网页源代码

        

         定位到form标签下

        (1)在form表单中寻找action对应的url地址,注意:不是所有的网站的action都有url地址,有的对应的是js

        (2)post的数据是input标签中name属性的值作为键,真正的用户名或密码作为值的字典,post的url地址就是action对应的url地址(有的时候是,有的时候不是,需要注意)。

        (3)当form表单的action没有url地址,这时候需要用Network进行抓包获取真正的post的url地址

          1>输入用户名和密码(可以输入错误的)到表单中,抓取发送pose的url

             记住要勾选住Preserve log这样能够留下所有的请求,包括上一次的数据

              1>>当输入错误的数据登录时,浏览器回向登录地址发送请求,这时通过抓包,可以拿到真正的post的url地址

               2>>在抓取到的数据中,对比是哪个网址接受的formdata数据,则该url为目标url

              3>>找到url后,需要分析formdata的参数组成,通过多次的错误请求,对比参数变化

    2、人人网案例分析(网页版)

       如果取模拟操作一些网站,首先可以尝试去获取一些相关参数,当相关参数由js动态生成,且url请求中也存在这些相关参数,可尝试取抓取网页版。

      1.进入人人网

        `http://www.renren.com/SysHome.do`

      2.输入错误的账号和密码(记住勾选住Preserve log)

        请求至少两次,观察生成的相同url请求

        (1)相同页面为

            

         (2)分析相同页面的url

          第一个的url为:`http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=202044220269`

          第二个的url为:`http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=202044228203`

          uniqueTimestamp时间戳在变化,待分析

        (3)分析相同url请求的参数

           第一个的FormData

            

           第二个的FormData

            

          第三个FormData

             

          email:三个都没有变化

          icode:验证码,未输入,所以无

          origURL:请求的url,未变,非相关参数

          domain:请求的域名,未变,非相关参数

          key_id:未知,但是都相同,非相关参数

          password:输入的密码都是123,但是生成的加密密码都一样,属于非动态加密的方式

          rkey:未变,属性未知,待分析

        (3)url的时间戳uniqueTimestamp分析

           输入`ctrl+shift+F`找到全局搜索,输入uniqueTimestamp,寻找相关内容

           

             uniqueTimestamp动态生成,由具体值组成。

            至于怎么获得,需要懂一些js语法。

            获取存在一定难度,我们可以看看手机版,是否有这些参数。

        (4)FormData的参数分析

          <1>password加密分析

            <<1>>输入`ctrl+shift+F`找到全局搜索,输入password,寻找相关js

            <<2>>那么多js,如何定位?我们的干什么?这就是目的,通过目的,拟化关键字,在搜索的匹配结果中,寻找待login字样的js

              

               

             <<3>>也可以通过在Sources中查找,Sources存放有服务器返回的所有文件

                我们的目的是找到在登录页面`https://www.renren.com/SysHome.do`中的加密密码的js算法,所有在该网页域名文件夹下找到相关内容。比如login.js。

                

             <<4>>找到加密password的js文件后,便可以逆向分析出加密的方法,变能够用python实现算法加密,得到加密的password值

           <2>rkey的来源

            <<1>>输入`ctrl+shift+F`找到全局搜索,输入password,寻找相关文件

               

             <<2>>分析login.js文件

              输入`ctrl+F`进行文件内搜索,

              

               找到rkey,通过分析发现rkey是属于n的属性,n又是有e提取出来的,e通过`url: "http://login.renren.com/ajax/getEncryptKey"`获取

              在Network中通过抓包,找到

              

              发现它返回一个json文件

              

               这个json文件中有对应的rkey值,然后我们对比FormData中的rkey值,发现是相等的(因为我抓取的文件多次刷新过,所有会不相同)

              通过请求这个地址,我们便可以得到这个rkey值

    3、人人网案例分析(手机版)

      1.请求手机版

        

         可以发现,只返回两个数据,一个是rkey,用于获取rkey值,还有一个是clog,用于发送post请求登录。

        数据相比网页版会清爽很多。

      2.FormData分析

        相关参数只有password和rKey

        rKey可以请求:`http://activity.renren.com/livecell/rKey`网址获得,无非是在请求之前多实现一步,而不用考虑其如何生成的。

        2.1 password分析

          (1)点击Elements,通过元素选择器选择“登录”,打开右侧的Event Listeners,勾选Ancestors all和Framework listeners,可以发现

            

            click下对应的监听到的文件,即为相应的js文件,点击进入 ,然后格式化查看(坐下叫有个{},点击即可格式化查看)

            找到文件中有password处理的内容

            

            可以看到password被处理的过程,通过python代码复现,来得到加密值。

        2.2 Console的使用

          将“ $(".password").value”复制到Console中

          

           可以发现,获取到的是输入的密码的值

          Console可以验证js中的代码,当看不懂时,可以粘贴到里面来进行验证

        2.3 js的调试

          在行号中可以通过点击添加断点

          

           添加完断点后,点击登录,既可进入调试状态,点击下一步按钮,程序运行,断点对应的部分,右边状态栏会高亮。

          Scope下的Local下相应变化的值会呈现出来

          鼠标移动到相应的函数下,会弹出一个对话框,是该函数所在的js文件。

    4、总结

      4.1 抓包,寻找登录的url地址

        (1)勾选Preserve log按钮,防止页面跳转找不到url

        (2)寻找post数据,确定参数

          <1>参数不会变,直接用,比如密码不是动态加密的时候

          <2>参数会变

            <<1>>参数在当前的响应中

            <<2>>通过js生成

      4.2 定位到想要的js

        (1)选择会出发js事件的按钮,点击event listener,找到js的位置

        (2)通过chrome中的search all file来搜索url中关键字

        (3)添加断点的方式来查看js的操作,通过python来进行同样的操作。

          

  • 相关阅读:
    Asp.Net实现FORM认证的一些使用技巧(必看篇)
    python3 关联规则Apriori代码模版
    一家人(模拟)
    一家人(模拟)
    积木城堡(dp)
    积木城堡(dp)
    Tensorflow笔记——神经网络图像识别(四)搭建模块化的神经网络八股(正则化,指数衰减学习率,滑动平均等优化)...
    Tensorflow笔记——神经网络图像识别(四)搭建模块化的神经网络八股(正则化,指数衰减学习率,滑动平均等优化)
    保存训练好的机器学习模型
    保存训练好的机器学习模型
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12892289.html
Copyright © 2011-2022 走看看