模拟浏览器登录网站

news/2024/5/20 22:48:32/文章来源:https://blog.csdn.net/weixin_34221332/article/details/92469571

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  

  本程序采用JAVA所定,举个例子是模拟浏览器登录小米官网,采用的类主要是HttpURLConnection,HttpsURLConnectionURL请求的类别: 分二类,GET与POST请求。二者的区别在于:     

  a:) get请求可以获取静态页面,也可以把参数放在URL字符串后面,传递给servlet, 
     b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 
小米官网登录分析,浏览器首先打开此地址,进行第一次会话,https://account.xiaomi.com/pass/serviceLogin,会话的过程中会保存会话ID,以后每次请求都需要附上此ID才行,否则服务器会认为用户是重新登录,有了此ID,服务器会认为是同一个用户此次请求是GET请求,相应的HttpURLConnction的设置如下

url=new URL(urlStr);httpConn=(HttpURLConnection) url.openConnection();httpConn.setRequestMethod("GET");HttpsURLConnection.setFollowRedirects(false);httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; qdesk 2.4.1263.203; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727");httpConn.setRequestProperty("Accept-Language","zh-cn");httpConn.setRequestProperty("Accept", "application/msword, application/xaml+xml, application/x-ms-xbap, application/x-ms-application, */*");httpConn.setRequestProperty("Accept-Encoding","gzip, deflate");httpConn.setUseCaches(false);httpConn.setRequestProperty("Host","account.xiaomi.com");httpConn.setRequestProperty("Connection", "Keep-Alive");httpConn.setConnectTimeout(15000);httpConn.setReadTimeout(20000);httpConn.setAllowUserInteraction(false);

设置完后,即发送请求:

httpConn.getInputStream();String cookieVal = null;String key=null;for (int i = 1; (key = httpConn.getHeaderFieldKey(i)) != null; i++ ) {System.out.println(key+"-----"+httpConn.getHeaderField(i));if (key.equalsIgnoreCase("set-cookie")){cookieVal = httpConn.getHeaderField(i);cookieVal = cookieVal.substring(0, cookieVal.indexOf(";"));System.out.println(cookieVal);String []str=sessionId.split(";");boolean flag=false;for(int t=0;t<str.length;t++){if(str[t]==cookieVal)flag=true;}if(!flag){sessionId=sessionId+cookieVal+";";}                        }}BufferedReader in = null;sessionId=sessionId.substring(0,sessionId.length()-1);InputStream inz=httpConn.getInputStream();in = new BufferedReader(new InputStreamReader(inz,"UTF-8"));String str=httpConn.getHeaderField("Content-Encoding");if(str!=null&&str.trim().endsWith("gzip")){GZIPInputStream gzin = new GZIPInputStream(inz);in = new BufferedReader(new InputStreamReader(gzin, "UTF-8"));}        String line="";while((line=in.readLine())!=null){System.out.println(line);}

上述代码会获取会话ID,JSESSION,注意服务器可能会返回gzip格式的数据,要进行相应的处理

有了会话ID后,即可进行登录,登录采用的是POST请求,POST请求参数是通过PrintWriter写入,从返回的数据中获得相应的cookie值作下一次使用

注意请求参数的设置,参数的设置可以查看页面源代码可知,Post请求需要传的参数为passToken,user,pwd,callback,sid,hidden

相应的HttpURLConnction的设置如下

url=new URL(urlStr);httpConn=(HttpsURLConnection) url.openConnection();httpConn.setRequestMethod("POST");HttpsURLConnection.setFollowRedirects(false);System.out.println("second:"+sessionId);httpConn.setRequestProperty("Cookie", sessionId);httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");httpConn.setRequestProperty("Accept", "application/msword, application/xaml+xml, application/x-ms-xbap, application/x-ms-application, */*");httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; qdesk 2.4.1263.203; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727");httpConn.setRequestProperty("Accept-Language","zh-cn");httpConn.setRequestProperty("Accept-Encoding", "gzip, deflate");httpConn.setRequestProperty("Connection", "Keep-Alive");httpConn.setRequestProperty("Host","account.xiaomi.com");httpConn.setRequestProperty("Content-Length",String.valueOf(param.getBytes()));httpConn.setRequestProperty("Referer","https://account.xiaomi.com/pass/serviceLogin");httpConn.setDoOutput(true);httpConn.setDoInput(true);httpConn.setConnectTimeout(15000);httpConn.setUseCaches(false);httpConn.setAllowUserInteraction(false);httpConn.setInstanceFollowRedirects(false);

获得数据并设置cookie为进一步访问做准备

PrintWriter out = new PrintWriter(httpConn.getOutputStream());out.print(param);out.flush();out.close();InputStream inz=httpConn.getInputStream();in = new BufferedReader(new InputStreamReader(inz,"UTF-8"));String key=null;String cookieVal = null;String str=httpConn.getHeaderField("Content-Encoding");if(str!=null&&str.trim().endsWith("gzip")){GZIPInputStream gzin = new GZIPInputStream(inz);in = new BufferedReader(new InputStreamReader(gzin, "UTF-8"));}for (int i = 1; (key = httpConn.getHeaderFieldKey(i)) != null; i++ ) {System.out.println(key+"-----"+httpConn.getHeaderField(i));if (key.equalsIgnoreCase("set-cookie")) {cookieVal = httpConn.getHeaderField(i);cookieVal = cookieVal.substring(0, cookieVal.indexOf(";"));if(cookieVal.indexOf("passToken")>-1){passToken=cookieVal.substring(cookieVal.indexOf("=")+1);}if(cookieVal.indexOf("userId")>-1){userId=cookieVal.substring(cookieVal.indexOf("=")+1);}}}String line;while ((line = in.readLine())!= null){System.out.println(line);}httpConn.getInputStream().close();

写到这了,你就可以看到登录成功后你自已的用户信息,随后的每一次访问都需要先前设置的cookie

 

 

 

 

 

 

 

转载于:https://my.oschina.net/lanyuancom/blog/159730

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_805000.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

github+firebase建站

为什么80%的码农都做不了架构师&#xff1f;>>> #背景介绍# 毕业几个月了&#xff0c;需要更新大家的通讯录&#xff0c;但是google doc有些同学反映总打不开&#xff08;不是所有的计算机毕业学生都会当程序员&#xff09;&#xff0c;国内的在线DOC我找到的都不支…

设计多选一按钮ChooseOnlyButton

设计多选一按钮ChooseOnlyButton 效果: 源码: ChooseOnlyButton.h 与 ChooseOnlyButton.m // // ChooseOnlyButton.h // ChooseOnlyButton // // Created by YouXianMing on 14/11/4. // Copyright (c) 2014年 YouXianMing. All rights reserved. //#import <UIKit/UIKi…

10个提供免费PHP脚本下载的网站

本文将重点介绍10个PHP脚本的免费资源下载站。之前推荐 《16个下载超酷脚本的热门网站》&#xff0c;这些网站除了PHP脚本&#xff0c;还有JavaScript、Java、Perl、ASP等脚本。如果你已是脚本代码巧匠&#xff0c;不妨把你的出色脚本放到Code Canyon网站上去出售&#xff0c;这…

一些网站的图片只要修改 URL 地址就能得到任何尺寸的图片

2019独角兽企业重金招聘Python工程师标准>>> 时光网: http://img21.mtime.cn/CMS/Gallery/2011/07/02/170837.97014036_160X160.jpg http://img21.mtime.cn/CMS/Gallery/2011/07/02/170837.97014036_362X571.jpg http://img21.mtime.cn/CMS/Gallery/2011/07/02/1708…

Web服务器安全服务,服务器防攻击,服务器防木马,服务器权限配置-网站安全服务...

2019独角兽企业重金招聘Python工程师标准>>> 网站安全服务 QQ: 联系 285691605 网站地址 http://blog.bypat.com Bypat 安全维护服务针对与网站被挂马&#xff0c;网站被挂黑链&#xff0c;首页被篡改&#xff0c;网站被黑客入侵&#xff0c;网站被攻击&#xff0c…

iis7.0上发布mvc4.0网站

步骤如下&#xff1a; 1.右击需要发布的项目&#xff0c;在弹出的菜单中选择“发布...”选项 2.在“发布web”对话框中进行设置&#xff0c;配置文件名称默认为“配置文件1”可以修改为需要的名字&#xff0c;以便识别&#xff0c;也可以不改。发布方法选择“文件系统”&#x…

新手学习在Ubuntu 14.04搭建Javaweb网站(2)--开启SSH服务

2019独角兽企业重金招聘Python工程师标准>>> SSH分客户端openssh-client和openssh-server 我们这里要安装的openssh-server 直接输入命令&#xff1a;sudo apt-get install openssh-server 然后确认sshserver是否启动了&#xff1a;ps -e |grep ssh如果看到sshd那…

从12306网站新验证码看Web验证码设计与破解

2019独角兽企业重金招聘Python工程师标准>>> 铁路官方购票网站12306又出新招&#xff0c;在登录界面推出了全新的验证方式&#xff0c;用户在填写好登录名和密码之后&#xff0c;还要准确的选取图片验证码才能登陆成功。据悉&#xff0c;12306验证码改版后&#xff…

网站服务端开发

2019独角兽企业重金招聘Python工程师标准>>> Memcached vs. Redis?ASP.NET Session State Management With Redis (Local Server Farm Testing) 转载于:https://my.oschina.net/ITELITE/blog/515708

python unittest库 官方网站

为什么80%的码农都做不了架构师&#xff1f;>>> 摘要里面是python unittest的官方摘要&#xff0c;如果有不懂的可以去查。 下面是一个老外写的一个博客也不错&#xff0c;可以看看&#xff1a; http://pyunit.sourceforge.net/pyunit.html 转载于:https://my.o…

亲历钓鱼网站

几个环节都让人无暇思考其真实性&#xff0c;直到我刚好去查看了邮箱帐号&#xff0c;发现根本没有这个帐号&#xff0c;才反应过来。

艾宾浩斯计划表自动生成网站_恋练有词高频词组整理笔记三(附艾宾浩斯计划表自动生成小技巧)...

点击关注不错过每一份精彩笔记&#xff01;温馨提示回复【考研福利】获取考研资料回复【VIP】查看2020考研服务包2019-08-21考研倒计时&#xff1a;122天导LEAD语今天四六级可以查分了&#xff0c;参加了考试的小伙伴可以怀着激动又刺激的心情打开查分界面了。再次表明一下&…

在网站中引入特殊字体

我的天~~这设计稿真好看&#xff01;又有给自己加戏写效果的冲动咯。。。 这都是些什么字体&#xff1f;&#xff1f;说好的微软雅黑法大宋体呢。。 又是一场切图的恶战。。。这小图标这么多&#xff0c;切个雪碧图还要做分辨率、兼容性适应。。不划算啊。。 所以这种时候就是特…

MiniARM工控核心板之-电平转换电路分析(下)(转载于周立功网站)

转载于&#xff1a;http://www.zlg.cn/ipc/article/detail/id/521.html晶体管上拉电阻通过双极性晶体管&#xff0c;集电极由上拉电阻接到电源&#xff0c;输入的高电平的电压值就是电源电压值。以MiniARM核心板与GPRS模块为例&#xff0c;如图 1所示&#xff1a; 图1 晶体管电…

MVC5 网站开发之七 用户功能 2 用户添加和浏览

目录 MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网站开发之五 展示层架构 MVC5 网站开发之六 管理员 1、登录、验证和注销 MVC5 网站开发之六 管理员 2、添加、删除、重…

大型网站架构演进(8)业务拆分

大型网站为了应对日益复杂的业务需求&#xff0c;通过使用分而治之的手段将整个网站的业务分成不同的产品线&#xff0c;然后交给不同的开发团队负责。这样一方面方便应用的扩展和维护&#xff0c;同时不同的应用对应不同的数据库&#xff0c;也减小了原来所有业务数据都在一个…

乐光云服务器网站,乐光云服务器地址

乐光云服务器地址 内容精选换一换本节操作介绍通过华为云APP连接Linux实例的操作步骤。云服务器状态为“运行中”。已获取Linux云服务器用户名和密码&#xff0c;忘记密码请参考在控制台重置云耀云服务器密码重置密码。云耀云服务器已经绑定弹性公网IP。所在安全组入方向已开放…

【转】用node.js爬取网站图片并保存

2019独角兽企业重金招聘Python工程师标准>>> 原文&#xff1a;http://www.jianshu.com/p/177ca8aaf6fb 昨天是传说中的程序员节&#xff0c;虽然我对于这个并无感&#xff0c;但还是来搞点事吧&#xff0c;写一个最简单的爬虫&#xff0c;抓取图片并保存在本地&…

成人网站性能提升20倍之经验谈

色情业是个大行业。互联网上没有多少网站的流量能和最大的色情网站相匹敌。 要搞定这巨大的流量很难。更困难的是&#xff0c;在色情网站上提供的很多内容都是低延迟的实时流媒体而不是简单的静态视频。但是对于所有碰到过的挑战&#xff0c;我很少看到有搞定过它们的开发人员写…

Robot Framework 学习(1)- 简单网站兼容性测试

Robot Framework 简单网站兼容性测试0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架&#xff0c;主要用于“验收测试”和“验收测试驱动开发(ATDD)” &#xff08;会其它文章中会详细介绍ATDD&#xff09;。它使用的是表格式的测试数据语法&#xff0c;并…