你可以认为我是在写爬虫,但其实不是。。。
程序模拟登陆最大的问题就是怎么保存登陆凭证。针对这个问题浏览器就做得很好,我们可以参考浏览器的做法。本质上,浏览器也是程序,只不过它做得够多。
当用户第一次访问网站的时候,后台会生成一个session,同时将一个字符串JSESSIONID作为响应头返回给前端。浏览器这个时候会把这个字符串JSESSIONID存储起来,然后之后的每一次请求都会在请求头中带上这个字符串JSESSIONID。这样后台就可以根据这个字符串找到之前的那个session了,不会再创建一个新的session。至于用户有没有登陆只要判断session中有没有用户信息就可以了。所以这就是为什么无状态的http请求能保留登陆状态的根本原因。
那我们用程序模拟登陆呢?如果你不做保存JSESSIONID这个操作,程序执行的每一次请求都会后端都会生成一个新的session,所以即使你登陆成功了也没有用。这样一分析,我们要做的就很简单了。
-
发送登陆请求,截取"Set-Cookie"响应头
-
发送之后的请求前先添加"Cookie"请求头
网友评论