Java通过httpclient获取cookie模拟登录

package Step1;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
/**
 *
    * @ClassName: HttpLogin
    * @Description:  java通过httpclient获取cookie模拟登录
    * @author zeze
    * @date 2015年11月10日 下午4:18:08
    *
 */

public class HttpLogin {

    public static void main(String[] args) {
        // 登陆 Url
        String loginUrl = "http://passport.mop.com/?targetUrl=http://hi.mop.com/?&g=1447141423230&loginCheck=UNLOGINED";
        // 需登陆后访问的 Url
        String dataUrl = "http://hi.mop.com/?";
        HttpClient httpClient = new HttpClient();

        // 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式
        PostMethod postMethod = new PostMethod(loginUrl);

        // 设置登陆时要求的信息,用户名和密码
        NameValuePair[] data = { new NameValuePair("loginName", "chzeze123"), new NameValuePair("loginPasswd", "**") };
        postMethod.setRequestBody(data);
        try {
            // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略
            httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
            int statusCode=httpClient.executeMethod(postMethod);

            // 获得登陆后的 Cookie
            Cookie[] cookies = httpClient.getState().getCookies();
            StringBuffer tmpcookies = new StringBuffer();
            for (Cookie c : cookies) {
                tmpcookies.append(c.toString() + ";");
                System.out.println("cookies = "+c.toString());
            }
            if(statusCode==302){//重定向到新的URL
                System.out.println("模拟登录成功");
                // 进行登陆后的操作
                GetMethod getMethod = new GetMethod(dataUrl);
                // 每次访问需授权的网址时需带上前面的 cookie 作为通行证
                getMethod.setRequestHeader("cookie", tmpcookies.toString());
                // 你还可以通过 PostMethod/GetMethod 设置更多的请求后数据
                // 例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外
                postMethod.setRequestHeader("Referer", "http://passport.mop.com/");
                postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36");
                httpClient.executeMethod(getMethod);
                // 打印出返回数据,检验一下是否成功
                String text = getMethod.getResponseBodyAsString();
                System.out.println(text);
            }
            else {
                System.out.println("登录失败");
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

原文地址:https://www.cnblogs.com/zhimingxin/p/8473883.html

时间: 2024-08-05 15:42:19

Java通过httpclient获取cookie模拟登录的相关文章

PHP获取Cookie模拟登录

一.定义Cookie存储路径 必须使用绝对路径 $cookie_jar = dirname(__FILE__)."/pic.cookie"; //$cookie_file = dirname(__FILE__).'/cookie.txt'; //$cookie_file = tempnam("tmp","cookie"); 二.获取Cookie $url = "http://1.2.3.4/"; $ch = curl_init

Python3之利用Cookie模拟登录

利用Cookie模拟登录步骤: 1.       在浏览器输入http://demo.bxcker.com,输入用户名和密码登录. 2.登录成功点"客户管理"模块. 3. 进入客户管理模块,显示客户列表. 4.通过抓包工具抓取客户列表,得到登录后的Cookie信息. GET http://demo.bxcker.com/customer/index.shtml HTTP/1.1 Host: demo.bxcker.com Connection: keep-alive Pragma: n

cookie模拟登录

cookie模拟登录 1.适用网站几场景 抓取需要登录才能访问的页面 2.cookie和session机制 # http协议为无连接协议 cookie: 存放在客户端浏览器 session: 存放在Web服务器 人人网登录案例 方法一.登录网站手动抓取Cookie 1.先登录成功1次,获取到携带登录信息的Cookie 登录成功-个人主页-F12抓包-刷新个人主页-找到主页的包(profile) 2.携带着cookie发请求 Cookie User-Agent import requests cl

PHP CURL获取cookies模拟登录的方法

要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了.利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302 跳转,而且是连续几十个302跳转,根本抓不了数据. 因此,在发送搜索命令时,需要先提取 cookies 并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了.这其实和论坛的模拟登录一个道理,先POST登录,获取cookies

验证码处理+cookie模拟登录

一.背景 相关博文:https://www.jianshu.com/p/9fce799edf1e https://blog.csdn.net/h19910518/article/details/79348051 Cookie ? HTTP协议它是无状态的,就是说这一次请求和上一次请求是没有任何关系的,没有关联的.这种无状态的的好处是快速.但是有时我们希望几个请求的页面要有关联,比如:在a已经登录,在b也希望是登陆状态,但是,这是2个不同的页面,也就是2个不同的HTTP请求,这2个HTTP请求是无

PHP模拟登录并获取数据

cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息.本文以模拟登录开源中国(oschina)为例,和大家分享cURL的使用. PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展. 代码实战先来看登录部分的代码:```//模拟登录 f

PHP通过CURL模拟登录并获取数据

<?php/*通过CURL模拟登录并获取数据 一些网站需要权限认证,必须登录网站后,才能有效地抓取网页并采集内容, 这就需要curl来设置cookie完成模拟登录网页,php的curl在抓取网页内容方 面效率是比较高的,而且支持多线程,而file_get_contents()效率就要稍低 些.模拟登录的代码如下所示:*/ function login_post($url, $cookie, $post){ $ch = curl_init(); //初始化curl模块 curl_setopt($c

Python爬虫模拟登录带验证码网站

问题分析: 1.爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 2.首先得明白cookie的作用,cookie是某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据.因此我们需要用Cookielib模块来保持网站的cookie. 3.这个是要登陆的地址 http://202.115.80.153/ 和验证码地址 http://202.115.80.15

HttpClient + Jsoup模拟登录教务处并获取课表

1.概述 最近想做一个校园助手类的APP,由于第一次做,所以打算先把每个功能单独实现,防止乱了阵脚.利用教务处登录获取课表和成绩等是一个基本功能,所以以获取课表为例实现了这个功能.完整代码点这里,尝试了好几次的,所以写的比较乱. 2.涉及的关键知识 首先,明确获取课表的流程:其实,获取课表就是让手机模拟浏览器,给服务器传去账号.密码,然后服务器会返回cookies(不懂自行百度),利用cookie就可以穿梭自如了,比如查课表.但是,浏览器登录时,返回的html文件浏览器是会自动解析成网页展现在我