首页 > 其他分享 >网络通信与状态管理:深入理解Cookie、Session及Web工具

网络通信与状态管理:深入理解Cookie、Session及Web工具

时间:2024-12-13 11:56:30浏览次数:3  
标签:Web http 文件 -- Session Cookie com

前言:在当今数字化的网络世界中,Web 技术的基石构建起了我们丰富多彩的互联网体验。其中,Cookie 和 Session 犹如隐匿于幕后的关键使者,默默地在客户端与服务器之间传递着信息,管理着用户的状态与交互数据,深刻影响着我们在各类网站与应用中的每一次操作与交互流程。

与此同时,Links、Wget、Curl、Httpie 这些强大的 Web 相关工具,宛如网络探险家手中的利器,助力开发者、运维人员以及技术爱好者深入挖掘 Web 资源、测试接口、模拟请求,它们以各自独特的功能和优势,在 Web 开发、调试以及数据获取等诸多场景中发挥着不可或缺的作用。

**本篇文章将深入探究 Cookie 和 Session 的奥秘,剖析它们的工作原理、区别与联系,以及在实际应用中的关键要点。同时,还将详细介绍 Links、Wget、Curl、Httpie 这些工具的特性、使用方法以及典型应用场景,为读者揭开 Web 技术底层架构与实用工具的神秘面纱,帮助大家更好地理解、运用这些知识与工具,在 Web 技术的广阔天地中畅行无阻,开启一场充满惊喜与收获的技术探索之旅。 **

Cookie 和 Session 是Web开发中用于管理用户会话和状态的两种常用技术。它们在用户与服务器之间的交互中扮演着重要的角色。以下是对它们的简要解释:

一、Cookie

  1. 定义:Cookie 是由服务器发送到用户浏览器并保存在本地的小块数据。它通常用于存储用户的一些信息,比如登录状态、用户偏好设置等。

  2. 存储位置:Cookie 存储在用户的浏览器中,每个Cookie都有特定的过期时间,过期后会被浏览器自动删除。

  3. 作用:Cookie 可以用来识别用户,实现个性化服务,比如记住用户的登录状态,这样用户就不用每次访问网站时都重新登录。

  4. 安全性:由于Cookie存储在客户端,因此它们容易受到篡改和盗窃。因此,敏感信息不应该直接存储在Cookie中。

  5. HTTP Only:为了提高安全性,可以设置Cookie为HTTP Only,这样JavaScript就无法访问这些Cookie,减少了跨站脚本攻击(XSS)的风险。

二、Session

  1. 定义:Session 是一种服务器端的存储方式,用于跟踪用户的状态。每个用户浏览器在访问服务器时,服务器会创建一个唯一的Session ID,并将其存储在用户的Cookie中。

  2. 存储位置:Session 数据存储在服务器端,通过Session ID来关联用户的状态。

  3. 作用:Session 可以用来存储用户的状态信息,比如用户的登录信息、购物车内容等。由于存储在服务器端,Session 比Cookie更安全。

  4. 生命周期:Session 有过期时间,当用户关闭浏览器或者Session超时,Session 就会结束。

  5. 安全性:由于Session ID存储在Cookie中,如果Cookie被篡改,攻击者可能会冒充用户。因此,保护Session ID的安全非常重要。

  6. Session 固定攻击:攻击者可能会尝试通过篡改Session ID来固定用户的Session,这是一种安全风险。

  • 存储位置:Cookie 存储在客户端,而Session存储在服务器端。
  • 安全性:Session 通常比Cookie更安全,因为数据存储在服务器端。
  • 存储容量:Cookie 有大小限制(通常为4KB),而Session没有这样的限制。
  • 生命周期:Cookie 可以设置为长期存储,而Session通常在浏览器关闭或超时后结束。

在实际应用中,Cookie 和 Session 常常结合使用,以实现更安全、更有效的用户状态管理。例如,可以使用Cookie来存储Session ID,而将实际的用户状态信息存储在服务器端的Session中。这样既利用了Cookie的便捷性,又保证了数据的安全性。

三、Web工具

格式:links [OPTION]... [URL]...

常用选项:

  • -dump 非交互式模式,显示输出结果
  • -source 打印源码

2、wget

格式:wget [OPTION]... [URL]...

常用选项:
启动:

  • -V, -version 显示wget的版本后退出
  • -h, -help 打印语法帮助
  • -b, -background 启动后转入后台执行
  • -e, -execute=COMMAND 执行.wgetrc'格式的命令,wgetrc格式参见/etc/wgetrc~/.wgetrc`

记录和输入文件:

  • -o, -output-file=FILE 把记录写到FILE文件中
  • -a, -append-output=FILE 把记录追加到FILE文件中
  • -d, -debug 打印调试输出
  • -q, -quiet 安静模式(没有输出)
  • -v, -verbose 冗长模式(这是缺省设置)
  • -nv, -non-verbose 关掉冗长模式,但不是安静模式
  • -i, -input-file=FILE 下载在FILE文件中出现的URLs
  • -F, -force-html 把输入文件当作HTML格式文件对待
  • -B, -base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀

下载:

  • -bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
  • -t, -tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
  • -O -output-document=FILE 把文档写到FILE文件中
  • -nc, -no-clobber 不要覆盖存在的文件或使用.#前缀
  • -c, -continue 接着下载没下载完的文件
  • -progress=TYPE 设定进程条标记
  • -N, -timestamping 不要重新下载文件除非比本地文件新
  • -S, -server-response 打印服务器的回应
  • -spider 不下载任何东西
  • -T, -timeout=SECONDS 设定响应超时的秒数
  • -w, -wait=SECONDS 两次尝试之间间隔SECONDS秒
  • -waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
  • -random-wait 在下载之间等待0…2*WAIT秒
  • -Y, -proxy=on/off 打开或关闭代理
  • -Q, -quota=NUMBER 设置下载的容量限制
  • -limit-rate=RATE 限定下载速率

目录:

  • -nd -no-directories 不创建目录
  • -x, -force-directories 强制创建目录
  • -nH, -no-host-directories 不创建主机目录
  • -P, -directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
    -cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项:

  • -http-user=USER 设定HTTP用户名为 USER
  • -http-passwd=PASS 设定http密码为 PASS
  • -C, -cache=on/off 允许/不允许服务器端的数据缓存(一般情况下允许)。
  • -E, -html-extension 将所有text/html文档以.html扩展名保存。
  • -ignore-length 忽略 Content-Length 头域。
  • -header=STRING 在headers中插入字符串 STRING
  • -proxy-user=USER 设定代理的用户名为 USER
  • -proxy-passwd=PASS 设定代理的密码为 PASS
  • -referer=URL 在HTTP请求中包含 Referer: URL 头。
  • -s, -save-headers 保存HTTP头到文件。
  • -U, -user-agent=AGENT 设定代理的名称为 AGENT 而不是 Wget/VERSION。
  • -no-http-keep-alive 关闭 HTTP活动链接(永远链接)。
  • -cookies=off 不使用 cookies。
  • -load-cookies=FILE 在开始会话前从文件 FILE 中加载cookie。
  • -save-cookies=FILE 在会话结束后将 cookies 保存到 FILE 文件中。

FTP 选项:

  • -nr, -dont-remove-listing 不移走 .listing 文件。
  • -g, -glob=on/off 打开或关闭文件名的 globbing 机制。
  • -passive-ftp 使用被动传输模式(默认值)。
  • -active-ftp 使用主动传输模式。
  • -retr-symlinks 在递归的时候,将链接指向文件(而不是目录)。

递归下载:

  • -r, -recursive 递归下载——慎用!
  • -l, -level=NUMBER 最大递归深度 (inf 或 0 代表无穷).
  • -delete-after 在下载完毕后局部删除文件。
  • -k, -convert-links 转换非相对链接为相对链接。
  • -K, -backup-converted 在转换文件X之前,将之备份为 X.orig。
  • -m, -mirror 等价于 -r -N -l inf -nr.
  • -p, -page-requisites 下载显示HTML文件的所有图片。

递归下载中的包含和不包含(accept/reject):

  • -A, -accept=LIST 分号分隔的被接受扩展名的列表。
  • -R, -reject=LIST 分号分隔的不被接受的扩展名的列表。
  • -D, -domains=LIST 分号分隔的被接受域的列表。
  • -exclude-domains=LIST 分号分隔的不被接受的域的列表。

跟踪和忽略选项:

  • -follow-ftp 跟踪HTML文档中的FTP链接。
  • -follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表。
  • -G, -ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表。
  • -H, -span-hosts 当递归时转到外部主机。
  • -L, -relative 仅仅跟踪相对链接。
  • -I, -include-directories=LIST 允许目录的列表。
  • -X, -exclude-directories=LIST 不被包含目录的列表。
  • -np, -no-parent 不要追溯到父目录。

常用选项:

  • -q 静默模式
  • -c 断点续传
  • -P /path 保存在指定目录
  • -O filename 保存为指定文件名,filename 为 - 时,发送至标准输出
    ---limit-rate= 指定传输速率,单位K,M等

范例,下载:
命令:wget --limit-rate 1M -P /data https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso
命令:ls /data

范例,实现浏览器功能:
命令:wget -qO - http://10.0.0.1/

3、curl

curl是一款能够依据URL语法,在命令行模式下运作的文件传输工具,其具备极为强大的功能,所支持的协议多种多样,涵盖了FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE以及LDAP等等。
不仅如此,curl在诸多方面都有着出色的表现。它支持HTTPS认证,能够运用HTTP的POST、PUT等多种方法开展操作,还可以实现FTP上传功能。在认证方面,kerberos认证、用户名/密码认证它都支持,同时也支持通过HTTP上传文件。而且,它具备断点续传的能力,不管是下载文件还是上载文件都能实现断点续传。
另外,curl对代理服务器相关的功能也有着很好的支持,像支持代理服务器、cookies,能实现http代理服务器管道(proxy tunneling),支持IPv6以及socks5代理服务器,甚至还可以借助http代理服务器将文件上传到FTP服务器等,为使用者在不同场景下的文件传输等操作提供了极大的便利。

格式:curl [options] [URL...]

常见选项:

  • -A/--user-agent <string>:设置用户代理发送给服务器。
  • -e/--referer <URL>:来源网址。
  • --cacert <file>:CA 证书 (SSL)。
  • -k/--insecure:允许忽略证书进行 SSL 连接。
  • --compressed:要求返回是压缩的格式。
  • -H/--header "key:value":自定义首部字段传递给服务器。
  • -i:显示页面内容,包括报文首部信息。
  • -I/--head:只显示响应报文首部信息。
  • -D/--dump-header <file>:将 url 的 header 信息存放在指定文件中。
  • --basic:使用 HTTP 基本认证。
  • -u/--user <user[:password]>:设置服务器的用户和密码。
  • -L:如果有 3xx 响应码,重新发请求到新位置。
  • -O:使用 URL 中默认的文件名保存文件到本地。
  • -o <file>:将网络文件保存为指定的文件中。
  • --limit-rate <rate>:设置传输速度。
  • -0/--http1.0:数字 0,使用 HTTP 1.0。
  • -v/--verbose:更详细。
  • -C:选项可对文件使用断点续传功能。
  • -c/--cookie-jar <file name>:将 url 中 cookie 存放在指定文件中。
  • -x/--proxy <proxyhost[:port]>:指定代理服务器地址。
  • -X/--request <command>:向服务器发送指定请求方法。
  • -U/--proxy-user <user:password>:代理服务器用户和密码。
  • -T:选项可将指定的本地文件上传到 FTP 服务器上。
  • --data/-d:方式指定使用 POST 方式传递数据。
  • -s --silent:Silent mode。
  • -b name=data:从服务器响应 set-cookie 得到值,返回给服务器。
  • -w <format>:显示相应的指定的报文信息,如:%{http_code}%{remote_ip}等。
  • -m, --max-time <time>:允许最大传输时间。

范例,服务网页:
命令:curl -I https://www.baidu.com
命令:curl -I -A ie10 https://www.baidu.com

范例,判断网站正常:
命令:if [ "$(curl -sL -w '%{http_code}' https://www.baidu.com - o /dev/null)" = "200" ]; then
命令:if curl -sL --fail http://www.wangxiaochun.com -o /dev/null; then

4、 httpie

HTTPie 工具是一款功能十分丰富的 HTTP 命令行客户端,它具备强大的功能,能够让用户通过简洁的命令行界面与各类 Web 服务展开交互。
该工具提供了一个非常方便的 http 命令,其最大的特点在于允许用户运用简单且自然的语法,轻松地发送各种 HTTP 请求。而且,HTTPie 工具还会将输出结果以彩色的形式呈现,这样的设计极大地增强了信息的可视化效果,使用户可以更加直观地查看和分析结果。
HTTPie 可广泛应用于测试领域,尤其是在与 HTTP 服务器进行交互测试时,能够帮助用户快速检查和验证服务器的响应,为开发人员、测试人员以及系统运维人员提供了一种高效、便捷的操作方式,是在 HTTP 服务测试和交互操作方面不可或缺的得力助手。

主要特点:

  • 具表达力的和直观语法
  • 格式化的及彩色化的终端输出
  • 内置 JSON 支持
  • 表单和文件上传
  • HTTPS、代理和认证
  • 任意请求数据
  • 自定义头部
  • 持久化会话
  • 类似 wget 的下载
  • 支持 Python 2.7 和 3.x

官方网站:

① 基本用法

httphttpie 的命令行工具,它允许你发送GET、POST、PUT、DELETE等HTTP请求。

查看帮助信息:

http --help

发送GET请求:

http www.example.com

发送POST请求:

http -f POST www.example.com username=john password=123

② 常用选项

  • --json: 发送JSON格式的数据。
  • --form: 发送表单数据。
  • --pretty: 格式化输出。
  • --headers: 只显示响应头。
  • --body: 只显示响应体。
  • --verbose: 显示请求和响应的详细信息。
  • --download: 下载请求的资源。
  • --session: 保存会话以供后续请求使用。

③ 示例

1. 发送GET请求并格式化输出:

http --check-status --pretty=all www.example.com

2. 发送POST请求并包含JSON数据:

http --header "Content-Type: application/json" POST www.example.com/users name=John age=30

3. 发送表单数据:

http -f POST www.example.com fields=name value=John

4. 下载文件:

http --download www.example.com/file.zip

5. 使用会话:

http --session=mysession www.example.com
http --session=mysession www.example.com/another-page

6. 发送带有自定义头部的请求:

http My-Header:123 www.example.com

7. 发送带有Bearer令牌的请求:

http Authorization:"Bearer token" www.example.com

8. 使用代理:

http --proxy=http:myproxy:8080 www.example.com

9. 发送文件:

http -f POST www.example.com file@localfile.txt

10. 显示请求和响应头:

http -v www.example.com

httpie 还有很多高级功能,如持久会话、自定义SSL证书验证等。这些示例只是展示了 httpie 的一些基本用法。更多高级用法和选项,可以通过查看 httpie 的官方文档或使用 http --help 命令来获取。

5、压力测试工具

  • httpd的压力测试工具:
  • ab, webbench, http_load, seige
  • Jmeter 开源
  • Loadrunner 商业,有相关认证
  • tcpcopy:网易,复制生产环境中的真实请求,并将之保存

ab 来自httpd-tools包
格式:ab [OPTIONS] URL

常用选项:

  • -n 总请求数
  • -c 模拟的并发数
  • -k:以持久连接模式测试
    注意:并发数高于1024时,需要用 ulimit -n # 调整能打开的文件数

标签:Web,http,文件,--,Session,Cookie,com
From: https://www.cnblogs.com/zhoutuo/p/18604597

相关文章

  • 【.Net动态Web API】参数验证异常返回
    ​......
  • 应急响应-web3
    应急响应-web3声明!学习靶机来自​知攻善防实验室****公众号,有兴趣的师傅可以关注一下,如涉及侵权马上删除文章笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人无关,切勿触碰法律底线,否则后果自负!!!!‍准备环境靶机下载地址:https://pan.......
  • jspssm基于javaweb的中药中草药商城 供求信息管理系统
    目录项目介绍具体实现截图开发核心技术:核心代码部分展示详细视频演示源码获取方式项目介绍整个中草药信息管理系统为了便于用户购买、管理员管理,采用了以下几大功能管理模块,包括管理员与用户、供应商的设计:用户用户只能做一些简单的操作,看看首页的中草药信息,以......
  • 【网络安全零基础入门到精通教程】Web渗透信息收集之域名、端口、服务、指纹、旁站、C
    声明:本人坚决反对利用教学方法进行恶意攻击的行为,一切错误的行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解技术背后的原理,更好地进行安全防护。文章目录一.Web渗透第一步二.域名信息收集1.域名查询2.Whois查询3.备案信息查询三.Web站点信息收集1.CMS指纹......
  • 知攻善防应急响应靶场练习-web1
    题目描述前景需要:小李在值守的过程中,发现有[CPU](https://so.csdn.net/so/search?q=CPU&spm=1001.2101.3001.7020)占用飙升,出于胆子小,就立刻将服务器关机,这是他的服务器系统,请你找出以下内容,并作为通关条件:1.攻击者的shell密码2.攻击者的IP地址3.攻击者的隐藏账户名称4.攻......
  • Cookie、Session、Filter过滤器
    一、Cookie####1.1工作原理客户端请求服务器后,如果服务器需要记录用户状态,服务器会在响应信息中包含一个Set-Cookie的响应头,客户端会根据这个响应头存储Cookie信息。再次请求服务器时,客户端会在请求信息中包含一个Cookie请求头,而服务器会根据这个请求头进行用户身份、状态......
  • web安全学习路线(非常详细),零基础入门到精通,看这一篇就够了
    1.学习基本的Web开发知识在学习Web安全之前,了解基本的Web开发知识是非常重要的。Web开发通常涉及HTML、CSS和JavaScript等技术。这些技术可以帮助您理解Web应用程序的结构和工作原理。此外,了解Web服务器和客户端之间的通信过程也有助于您更好地理解Web安......
  • web安全攻防入门教程
    Web安全攻防入门教程Web安全攻防是指在Web应用程序的开发、部署和运行过程中,保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现,还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。本教程将带你入门Web安全攻防的基础概念、常见攻击类......
  • web逆向实战7(中国观鸟记录中心)
    分析网站分析过程1.打开网站,我们只看xhr,点击翻页,只有一个数据包,载荷以及响应数据都是加密的,并且请求的header头也有两个加密的参数Requestid和Sign.2.我们先解决请求头的参数,我们通过搜索大法,搜索requestid,看一下只有第一个是在生成,其他地方的都是在使用,直接点进第一......
  • Web播放器EasyPlayer.js遇到The play() request was interrupted by a call to pause(
    随着互联网技术的飞速发展,尤其是5G技术的普及,很多人对流媒体视频萌生了极大的兴趣,本文将对此详细说明,让更多人了解视频流媒体播放器。EasyPlayer.js作为一款功能强大的无插件H5流媒体播放器,凭借其全面的协议支持、多种解码方式以及跨平台兼容性,赢得了广泛的关注和应用。它不仅为......