• firebug登陆之数据包分析


    登陆之数据包分析

    工具: python-urllib2   |  firefox+firebug或者chrome,用浏览器打开登陆页面之后,按F12键会默认打开开发者工具或者启动firebug,点击network监听数据包,下面以itune的登陆举一个例子。


    1. 在浏览器中输入itunes的登陆地址:https://itunesconnect.apple.com/itc/static /login?view=1&path=%2FWebObjects%2FiTunesConnect.woa,同时按F12启动firebug 进行网络监听.


    点击“网络” --》 ”全部“ ,可以看到所有加载的页面数据,包括html/图像/css/js等。

    点击“html”,全部里边显示的信息太多,可以先只看html,这里边出现的html-url通常是我们需要用urllib2实际请求的页面。

    下面是firefox+firebug显示的页面


    而这个是chrome的开发者工具显示的页面


    不同的工具监测到数据包会有差别,上面两个对比看一下,大概估计实际需要get的url,就只有2个。


    2. 我们点开查看其中一个,重点关注一下相应的参数、头信息。(头信息中的Cookie字段和 后面的cookies表单中的内容是一致的)。

    头信息又分为请求头信息和响应头信息。urlopen需要提交的头信息可能是请求头信息中的一部分。响应头信息中的字段可能会在访问下一个页面的时候用到。


    3. 账号密码的输入通常都会涉及到一个post请求,我们可以输入一个错误的账号、密码试试

    (输入正确的用户信息,会导致这个页面跳转,控制台会全部刷新,之前的访问路径就丢了)。

    点击进去,可以看到需要提交的参数(账号、密码等)、额外的头文件、cookie等。

    所以,itunes的登陆大概分为上面三步:

    先 get :  https://itunesconnect.apple.com/itc/static/login?view=1&path=%2FWebObjects%2FiTunesConnect.woa

    后 get :  https://idmsa.apple.com/appleauth/auth/signin?widgetKey=22d448248055bab0dc197c6271d738c3

    最后post : https://idmsa.apple.com/appleauth/auth/signin


    下面附上上面3步骤对应的python代码,早期的话,这种方式直接就能完成itunes的登陆,也适用于大部分简单的网站。

    1.   # 记录全过程的cookie  
    2.   cj=cookielib.CookieJar()   
    3.   opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))   
    4.   urllib2.install_opener(opener)   
    5.   # 前两步get  
    6.   response1 = urllib2.urlopen('<span style="font-size:14px;">https://itunesconnect.apple.com/itc/static/login?view=1&path=%2FWebObjects%2FiTunesConnect.woa</span>').read()  
    7.   response2 = urllib2.urlopen('https://idmsa.apple.com/appleauth/auth/signin?widgetKey=22d448248055bab0dc197c6271d738c3').read()  
    8.   # 第三步post  
    9.     
    10.   login_data = {'accountName':self.account, 'password': self.password, 'rememberMe': 'false'}# 账号和密码  
    11.   login_url = "<span style="font-size:14px;">https://idmsa.apple.com/appleauth/auth/signin</span>"  
    12.   head = {'Content-Type': 'application/json',# 头部信息  
    13.           'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36'}  
    14.   
    15.   loginData = urllib.urlencode(login_data)      
    16.   request = urllib2.Request(login_url, loginData, head) # 获取网页  
    17.   try:  
    18.       response = urllib2.urlopen(request, timeout = 6)  
    19.   except:  
    20.       print response.read()  
    21.       sys.exit(1)  
    22.   # 完成登陆,打印cookie信息  

    在 itunes网站升级之后,上面这种方法就不行了,因为itunes添加了新的验证机制,通常是需要爬虫使用额外的header。但难点在于这些 header的构造非常复杂,中间会经过一系列js的运算,这个时候要爬虫去计算出这些header值就变得非常困难。例如itunes升级之后,就需要 提交一个header叫“X-Apple-I-FD-Client-Info”,而这个header我们算不出来。


    总结

    通过数据包分析进行登录验证的优缺点如下。

    优点:执行速度快。

    缺点:抓包分析比较费时,有的时候不确定哪些header是必须的,另外有些header算不出来。

    在验证分析需要的header取不到的情况下,就可以考虑使用浏览器模拟点击的方式,跳过数据包分析。

  • 相关阅读:
    八数码问题 Eight Digital Problem
    What is probabilistic programming? | 中文翻译
    Installing Moses on Ubuntu 16.04
    Python3 解析XML 层序遍历二叉树
    ORACLE之PACKAGE-包、存储过程、函数
    Java解析XMl文件之SAX和DOm方法
    关于Could not parse configuration: /hibernate.cfg.xml的问题
    hibernate入门
    linux常用命令
    基本STRUTS标签-学习笔记-Bean标签
  • 原文地址:https://www.cnblogs.com/timssd/p/5098117.html
Copyright © 2020-2023  润新知