热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用cookies获取登录后的网页

众所周知,HTTP连接是无状态的,那么问题来了,怎么记录用户的登录信息呢?通常的做法是用户第一次发送HTTP请求时,在HTTPServer端生成一个SessionID,SessionID会对应每

  众所周知,HTTP连接是无状态的,那么问题来了,怎么记录用户的登录信息呢?通常的做法是用户第一次发送HTTP请求时,在HTTP Server端生成一个SessionID,SessionID会对应每个会话的状态(比如是否登录,等等),并且将SessionID保存在浏览器的COOKIEs中。我们登录一个网页后,打开另外一个窗口访问相同的网页不需要登录,就是因为两个网页都对应同一个COOKIEs。

  有时在做python爬虫时,需要访问登录后才可以访问的网页,利用已经登录的COOKIE文件就可以达到此目的。下面以迅雷网为例来做实验,实验平台为Linux。

  1. 首先在Firefox浏览器端登录迅雷网,使用Firebug插件导出COOKIEs。

  2. 修改COOKIEs的格式,假设文件名为xunlei.txt,正确的格式如下:

 1 # Netscape HTTP COOKIE File.
 2 # Generated by Wget on 2015-06-27 23:54:34.
 3 # Edit at your own risk.
 4 
 5 .dynamic.i.xunlei.com   TRUE    /   FALSE   1498494348  __utma  74633479.1276576155.1435422349.1435422349.1435422349.1
 6 .i.xunlei.com   TRUE    /   FALSE   1498494325  __utma  112570076.1792933177.1435422325.1435422325.1435422325.1
 7 .dynamic.i.xunlei.com   TRUE    /   FALSE   1435424148  __utmb  74633479.1.10.1435422349
 8 .i.xunlei.com   TRUE    /   FALSE   1435424125  __utmb  112570076.1.10.1435422325
 9 .dynamic.i.xunlei.com   TRUE    /   FALSE   1498494348  __utmc  74633479
10 .i.xunlei.com   TRUE    /   FALSE   1498494348  __utmc  112570076
11 .i.xunlei.com   TRUE    /   FALSE   1435422925  __utmt  1
12 .dynamic.i.xunlei.com   TRUE    /   FALSE   1451190348  __utmz  74633479.1435422349.1.1.utmcsr=i.xunlei.com|utmccn=(referral)|utmcmd=referral|utmcct=/login.html
13 .i.xunlei.com   TRUE    /   FALSE   1451190325  __utmz  112570076.1435422325.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
14 dynamic.i.xunlei.com    FALSE   /   FALSE   1498494348  __xltjbr    1435422347556
15 dynamic.i.xunlei.com    FALSE   /   FALSE   1435424148  _s19    1435770994546b1435422324953b2bhttp%3A//dynamic.i.xunlei.com/user
# COOKIEs行数比较多,就不写了,有三个地方注意:
# 1.第一行不能少,并且一个字符都不能错。
# 2.格式要严格为(空白处为TAB):
域 [TRUE或FALSE]  / [TRUE或FALSE]  过期时间戳  名称  内容

  3. 使用python代码读取xunlei.txt,并访问登录后才能访问的网页,例如:http://dynamic.i.xunlei.com/user

下面为源代码:

 1 import COOKIElib, urllib2
 2 
 3 COOKIE = COOKIElib.MozillaCOOKIEJar()
 4 COOKIE.load("xunlei.txt")
 5 handle=urllib2.HTTPCOOKIEProcessor(COOKIE)
 6 opener = urllib2.build_opener(handle)
 7 urllib2.install_opener(opener)
 8 
 9 url = "http://dynamic.i.xunlei.com/user"
10 req = urllib2.Request(url)
11 respOnse= urllib2.urlopen(req)
12 print response.read()

  4. 打印出来的代码即为我登录后,在http://dynamic.i.xunlei.com/user看到的内容。

 

  以上的原理与CSRF攻击的原理类似,CSRF攻击的就是利用非法获得用户COOKIEs,伪装成用户进行操作。针对这种攻击,web站点可以生成token,HTTP Server会验证每次请求的token,来避免CSRF攻击,例如Django的CsrfViewMiddleware。

  但是token依然被放在了COOKIEs中,依然可以进行CSRF攻击,只不过攻击的方式复杂了些。


推荐阅读
  • .NET Core 托管服务优化与实践
    在.NET Core应用中,托管服务的形式主要分为进程内托管(InProcess)和进程外托管(OutOfProcess)。这两种托管方式各有优缺点,本文将深入探讨它们的特点,并结合实际案例,介绍如何根据具体需求选择合适的托管模式,以实现性能优化和资源利用的最大化。此外,文章还将分享一些实用的配置技巧和最佳实践,帮助开发者提升应用的稳定性和可维护性。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 解决针织难题:R语言编程技巧与常见错误分析 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
author-avatar
赵以书的话_256
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有