java微博模拟登陆_java 模拟登录新浪微博(通过cookie)
这几天一直在研究新浪微博的爬虫,发现爬取微博的数据首先要登录。本来打算是通过账号和密码模拟浏览器登录。但是现在微博的登录机制比较复杂。通过账号密码还没有登录成功QAQ。所以就先记录下,通过cookie直接访问自己的微博主页。
微博登录的认证过程
微博登录的细节在其他的博客里已经有了详细的介绍。大概就是用户输入账号和密码后与服务器产生几次会话。若认证成功后,微博的服务器会返回给浏览器一个cookie。在之后访问微博的其他内容时,通过发送这个cookie就能正常访问微博了。所以用过cookie访问微博,过程就简化为了获取cookie,然后通过程序模拟浏览器访问微博首页。
获取微博的cookie
通过抓包软件或浏览器自带的调试工具都可以抓取网页的cookie。本文使用的是火狐浏览器的HttpFox 插件来获取微博的cookie。
1,打开微博首页,打开HttpFox
2,输入用户名和密码,勾选“记住我”,点击登录。点击登录后我们可以看到HttpFox下产生了很多的URL。进入主页后在HTTPFox中找到你主页对应的URL,如下图:
点击主页的URL后,我们可以看见左下方的一些信息。包括“Headers”,“Cookies”等。
3,在“Headers”中可以看到有一条“Cookie”的信息。这个就是我们所需要的cookie了。点击右键保存cookie。
至此,就获取了我们登录时所要的cookie了!
代码实现
由于我们是直接通过cookie进行的登录。所以少了很多认证的过程。直接使用HttpClient的相关包,带上之前获取的cookie就可以访问个人首页。获取了首页,我们就可以通过正则表达式来分析微博数据了。
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.cookie.CookieSpec;
import org.apache.http.cookie.CookieSpecProvider;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.cookie.DefaultCookieSpec;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
/**
*
*
*@author zkw
*
*/
public class cookieLogin {
private HttpClient client;
private HttpPost post;
private HttpGet get;
private BasicCookieStore cookieStore;
public cookieLogin() {
//cookie策略,不设置会拒绝cookie rejected,设置策略保存cookie信息
cookieStore = new BasicCookieStore();
CookieSpecProvider myCookie = new CookieSpecProvider() {
public CookieSpec create(HttpContext context) {
return new DefaultCookieSpec();
}
};
Registry rg = RegistryBuilder. create().register("myCookie", myCookie)
.build();
client = HttpClients.custom().setDefaultCookieStore(cookieStore).setDefaultCookieSpecRegistry(rg).build();
get = new HttpGet();
post = new HttpPost();
}
public void Login() throws ClientProtocolException, IOException, URISyntaxException {
String LoginUrl = "你的微博主页网址";
get.setURI(new URI(LoginUrl));
get.addHeader("Host", "weibo.com");
get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0");
get.addHeader("Accept", "*/*");
get.addHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
get.addHeader("Accept-Encoding", "gzip, deflate");
get.addHeader("Referer", "http://weibo.com/");
get.addHeader(new BasicHeader("Cookie", "上述获取的cookie值"));
HttpResponse resp = client.execute(get);
HttpEntity entity = resp.getEntity();
String cont = EntityUtils.toString(entity);
System.out.println("获取的微博内容:" + cont);
}
public HttpClient getClient() {
return client;
}
public void setClient(HttpClient client) {
this.client = client;
}
public HttpPost getPost() {
return post;
}
public void setPost(HttpPost post) {
this.post = post;
}
public HttpGet getGet() {
return get;
}
public void setGet(HttpGet get) {
this.get = get;
}
public BasicCookieStore getCookieStore() {
return cookieStore;
}
public void setCookieStore(BasicCookieStore cookieStore) {
this.cookieStore = cookieStore;
}
public static void main(String[] args) throws ClientProtocolException, IOException, URISyntaxException {
new cookieLogin().Login();
}
}
总结
通过cookie登录微博是一种快捷方式,但是存在不少问题。所以博主还在研究微博账号认证过程,希望过几天能有所突破QAQ。
java微博模拟登陆_java 模拟登录新浪微博(通过cookie)相关推荐
- php rsa2 微博,php新浪通行证登录新浪微博登录模拟登录(浏览器版)2016
由于需要项目需要管理微博平台内容,集成登录微博管理平台功能,所以在抓取网页基础上探索了一下浏览器模拟登录,已经实现登录功能,采用JQuery和php结合的方式实现的,其中需要注意跨域访问问题,代码如下 ...
- python的模拟登录原理_python---cookie模拟登陆和模拟session原理
cookie模拟登陆: import tornado.web class IndexHandler(tornado.web.RequestHandler): def get(self): #self. ...
- android模拟登陆,Android模拟登录V2EX
最近在撸一个V2EX的客户端,官方API缺少一些功能如登录,发帖等,撸完官方API总觉得少了什么,本篇文章主要通过模拟登录实现一些官方没提供API的功能 观察登录传输的数据 在网页上登录帐号,通过ch ...
- UI测试框架:playwright-python + pytest 模拟登陆后保持登录状态进行测试,避免重复登陆
playwright-python + pytest 模拟登陆后进行测试 playwright-python + pytest 模拟登陆后进行测试 1. 初始(遇到的问题) 2. 问题的解决方法 1. ...
- php怎么实现模拟登陆,php模拟登陆的实现方法_PHP教程
php模拟登陆的实现方法 php模拟登陆的实现方法,这里分别列举两种方法实现模拟登陆人人网.具体实例代码如下: (1)使用snoopy模拟登陆 referer='http://www.renren.c ...
- 关于模拟登陆的小结-抓包、cookie、session和token
概述 上个星期根据bcloud写了个Java版本的登陆项目.其实本来时想做个Linux的百度云登陆软件,但是做到获取bdstoken的时候出了问题解决不了.后来我把bcloud项目下了下来用发现也有问 ...
- 日常小结-关于模拟登陆的小结-抓包、cookie、session和token
概述 上个星期根据bcloud写了个java版本的登陆项目.其实本来时想做个linux的百度云登陆软件,但是做到获取bdstoken的时候出了问题解决不了.后来我把bcloud项目下了下来用发现也有问 ...
- Python3 微信公众平台模拟登陆 requests模拟请求
声明此代码仅供技术交流学习,擅自用于其他,一切后果与本人无关 目标网址: https://mp.weixin.qq.com/ 所谓模拟登陆,就是自己模拟构造请求发送给服务器,然后服务器返回认证的信息过 ...
- java简单小程序_Java简易登录注册小程序
这篇文章主要介绍了Java图形界面开发,简易登录注册小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的 ...
- java 天猫模拟登陆_爬虫登录 最好是天猫爬虫登录 有经验的大神请赐教
public String Post(string url, stringpostData) {try{#region 登录 string loginurl = "http://10.16. ...
最新文章
- web前端入门学习 css(7)css高级技巧 (精灵图、字体图标、css三角、鼠标样式、表单轮廓线、文本框拖拽、垂直对齐、图底空白缝隙、margin负值、溢出文字省略号、文字环绕、css初始化)
- 【Android】SlidingMenu属性详解(转)
- MSF(三):信息收集
- 终端模拟器编译c语言,编写你自己的Terminal emulator
- JSON.parse和JSON.stringify 参数详解
- 测试每个阶段需要输出的文档
- Android应用程序内部启动Activity过程(startActivity)的源代码分析
- 神经网络Neural Net背景介绍
- OpenGL超级宝典(第7版)之VS2019使用sb7框架搭建自己的程序
- 电路与电子技术课程设计报告(正弦、方波-三角波、可调矩形波、可调锯齿波发生器)
- 《金牌网管师——助理级网吧网管》目录
- [云原生专题-34]:K8S - 核心概念 - 网络 - Web服务器与反向代理服务器nginx入门介绍
- 现在的 Linux 内核和 Linux 2.6 的内核有多大区别?
- Hazelcast 集群
- 模拟电路学习-之容抗和感抗
- 我的Go+语言初体验——Demo游戏体验篇(直男程序员的真实体验)
- 华为路由模拟器3.0参考实验8----单臂路由无法ping通问题分析
- Python小程序之超市买水果
- kibana 搜索语法
- Java自学教程!mysql环境变量配置好了之后怎么办
热门文章
- layui icon服务器上显示不出来,关于layui的动态图标不显示的解决方法
- 手把手教你智能硬件开发(一) 我选Arduino
- Win10WIFI链接不上||无线网卡错误代码56
- setoolkit制作简单钓鱼网站
- 【Impala】基于Hive的快速大数据查询引擎——Impala知识点总结
- sql 查询in的集合元素过多优化方式
- word2016自动目录样式修改
- 1284. Minimum Number of Flips to Convert Binary Matrix to Zero Matrix
- 微信平台商户开通证书相关问题盘点
- 【数字信号去噪】基于matlab小波变换地震波去噪【含Matlab源码 1954期】