cnzz 模拟请求登录(传入url get data ) demo

/**
	 *
	 * @Title: init
	 * @Description: TODO 初始化httpclien
	 * @param url
	 *            cnzz对应的链接
	 * @param password
	 *            cnzz 对应的密码
	 * @return
	 *
	 * @return: HttpClient
	 */
	public static String init(HttpClient httpclient, String url, String password) {
		// 建立 httpPost对象
		HttpPost httpPost = new HttpPost(url);
		// 建立一个NameValuePair数组,用于存储欲传送的参数
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("password", password));
		String locationUrl = "";
		try {
			// 设置为utf-8编码
			httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
			HttpResponse response = httpclient.execute(httpPost);
			// 获取 重定向后的url
			locationUrl = response.getLastHeader("Location").getValue();
			// 设置cookie
			List<Cookie> cookies = ((AbstractHttpClient) httpclient).getCookieStore().getCookies();
			if (cookies.isEmpty()) {
				System.out.println("None");
			} else {
				for (int i = 0; i < cookies.size(); i++) {
					System.out.println(cookies.get(i).getName() + ":" + cookies.get(i).getValue() + "-----");
				}
			}
			// 获得返回体
			HttpEntity entity = response.getEntity();
			// 获得体内容
			String responseHtmQueryPage = IOUtils.toString(entity.getContent());
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return locationUrl;

	}

	/**
	 *
	 * @Title: sendRequest
	 * @Description: TODO 根据登陆后跳转的链接发送 第二次请求
	 * @param httpclient
	 * @param locationUrl
	 *            登陆后重定向的链接
	 *
	 * @return: url
	 */
	public static String sendTwoRequest(HttpClient httpclient, String locationUrl) {
		String url = "";
		try {
			// 发送get请求
			HttpGet httpGet = new HttpGet(locationUrl);
			HttpResponse response = httpclient.execute(httpGet);
			HttpEntity entity = response.getEntity();
			String responseHtmQueryPage = IOUtils.toString(entity.getContent());
			Document document = Jsoup.parse(responseHtmQueryPage);
			url = "https://web.umeng.com/" + document.select("script").html().split("‘")[1];
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return url;
	}

	/**
	 *
	 * @Title: sendRequest
	 * @Description: TODO 发送第三次请求
	 * @param httpclient
	 * @param url
	 * @return
	 *
	 *
	 */
	public static void sendThreeRequest(HttpClient httpclient, String url) {

		try {
			// 发送get请求
			HttpGet httpGet = new HttpGet(url);
			HttpResponse response = httpclient.execute(httpGet);
			HttpEntity entity = response.getEntity();
			String responseHtmQueryPage = IOUtils.toString(entity.getContent());

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 *
	 * @Title: sendFourRequest
	 * @Description: TODO 发送第四次请求 及要获取的真正数据的请求
	 * @param httpclient
	 * @param realUrl
	 * @return
	 *
	 * @return: String
	 */
	public static String sendFourRequest(HttpClient httpclient, String realUrl) {
		// 发送get请求
		String responseHtmQueryPage = "";
		try {
			HttpGet httpGet = new HttpGet(realUrl);

			HttpResponse response = httpclient.execute(httpGet);
			HttpEntity entity = response.getEntity();
			responseHtmQueryPage = IOUtils.toString(entity.getContent());
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return responseHtmQueryPage;

	}

  

时间: 2024-10-09 01:47:54

cnzz 模拟请求登录(传入url get data ) demo的相关文章

C#模拟请求,模拟登录,Cookie设置、文件上传等问题汇总

由于业务需求,最近需要模拟完成登陆某个网站,并上传所需要的文件.在开发途中,遇到了很多问题,现在,就我遇到的一些问题及解决办法说明如下,希望对遇到同样问题的人有所帮助.因为技术有限,可能有些内容并不完全正确或者理解有偏差,希望大家不要见怪,有不同的想法可以留言,我们共同学习,这也是我开始写博客的初衷之一. 模拟请求,首先我觉得我们需要明确的是,模拟那些请求,我们模拟请求要完成那些操作,就拿我上面的功能来说,我需要模拟登录某个网站,然后打开固定的页面,输入关键字,查找相关信息,然后上传所需要的文件

全程模拟新浪微博登录(2015)

很久之前就了解过模拟登录的过程,最近对python用的比较多,想来练练手,就想实现一下新浪微博登录,首先随便一搜,网上有大量的前辈们都做过了,我也仔细看了一下,并且参考之后发现无法登录,而且还有很多细节没有说得太清楚.同时网上最新的也是很久之前的,对于最新的版本也有一些改动,因此将我接近两天时间的研究全过程记录一下. 已有实现的简要过程 网上已有实现可以见http://www.douban.com/note/201767245/以及http://www.jb51.net/article/4477

cookielib和urllib2模块相结合模拟网站登录

1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送.coiokielib模块用到的对象主要有下面几 个:CookieJar.FileCookieJar.MozillaCookieJar.LWPCookieJar.其中他们的关系如下: 2.urllib2模块 说到urllib2模块最强大的部分绝对是它的o

模拟新浪微博登录-原理分析到实现

原文地址:http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ 上一篇文章 小试牛刀:使用Python模拟登录知乎 介绍了如何模拟知乎登录,虽然用到了验证码信息,但请求的参数都是原封不动的传递,刚开始接触的时候,觉得难度适中,回头再看的时候,反而感觉挺容易的.在这篇文章,将继续介绍模拟登录.与之前不一样的是,这次选择的对象是新浪微博,难度稍微提升了点,好在以往的许多码友们都留有许多经验贴,经过几番斟酌,微博的模拟登录算是

php 新浪通行证、新浪微博模拟统一登录 (后台网页抓取版) 2016

前几天做了一个Java的新浪通行证模拟登录测试.现在给大家一个php的新浪通行证.微博登录的示例:具体都有备注,大家阅读代码吧. <?php /** * tom 2016年4月12日10:37:08 模拟微博登录 */ class login_weibo { // 微博用户名称密码 private $username = ''; private $password = ''; //请求cookie private $request_cookie = ''; //预登陆返回json private

第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies

第三百三十三节,web爬虫讲解2-Scrapy框架爬虫-Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于start_urls,start_requests()返回的请求会替代start_urls里的请求 Request()get请求,可以设置,url.cookie.回调函数 FormRequest.from_response()表单post提交,第一个必须参数,上一次响应cookie的response对象,其

python模拟自动登录网站(urllib2)

不登录打开网页: import urllib2 request = urllib2.Request('http://www.baidu.com') response = urllib2.urlopen(request).read() print response 保存网页图片(https://www.baidu.com/img/bd_logo1.png): picurl = 'https://www.baidu.com/img/bd_logo1.png' #定义图片的url地址 req = ur

利用Python模拟GitHub登录

最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一个网站的登录,我们必须要简单了解其大致过程. 在这里,我通过Fiddler来抓取GitHub登录的请求,从网页上登录的URL为:https://github.com/login ,抓包结果如下: 左边的是会话列表,右边的是请求和响应的数据.一般情况下,登录都是用POST请求,因为我在左边的会话列表中

web爬虫讲解—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies

模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于start_urls,start_requests()返回的请求会替代start_urls里的请求 Request()get请求,可以设置,url.cookie.回调函数 FormRequest.from_response()表单post提交,第一个必须参数,上一次响应cookie的response对象,其他参数,cookie.url.表单内容等 yield Request()可以将一个新