Java爬虫——人人网模拟登录
人人网登录地址:http://www.renren.com/
此处登录没有考虑验证码验证码。

首先对登录方法进行分析
有两种方法。
一)在Elements中分析源码
发现登录点击后的事件是http://www.renren.com/PLogin.do

二)在Network中分析网络请求
请求链接:http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2017110237292

表单数据 :
email 账号用户名
icode 验证码,可为空
origURL : http://www.renren.com/home
domain:renren.com
key_id:1
captcha_type:web_login
password: 密码,需要对输入的密码进行加密处理
rkey: 密码处理
f: 未知 此处采取直接使用Elements发现的触发事件。
1 package 人人网模拟登录;
2
3 import org.apache.http.Header;
4 import org.apache.http.NameValuePair;
5 import org.apache.http.client.ResponseHandler;
6 import org.apache.http.client.entity.UrlEncodedFormEntity;
7 import org.apache.http.client.methods.CloseableHttpResponse;
8 import org.apache.http.client.methods.HttpGet;
9 import org.apache.http.client.methods.HttpPost;
10 import org.apache.http.impl.client.BasicResponseHandler;
11 import org.apache.http.impl.client.CloseableHttpClient;
12 import org.apache.http.impl.client.HttpClients;
13 import org.apache.http.message.BasicNameValuePair;
14 import java.util.ArrayList;
15 import java.util.List;
16
17 public class Renren {
18 public static void main(String[] args) throws Exception{
19 CloseableHttpClient closeableHttpClient = HttpClients.createDefault() ;
20 HttpPost httpPost = new HttpPost("http://www.renren.com/PLogin.do") ;
21
22 String userName = " " ; // 账号写入
23 String passWord = " " ; // 密码写入
24 List<NameValuePair> dlbd = new ArrayList<NameValuePair>();
25 // 登录表单设置
26 dlbd.add(new BasicNameValuePair("domain", "renren.com"));
27 dlbd.add(new BasicNameValuePair("isplogin", "true"));
28 dlbd.add(new BasicNameValuePair("submit", "登录"));
29 dlbd.add(new BasicNameValuePair("email", userName));
30 dlbd.add(new BasicNameValuePair("password", passWord));
31 httpPost.setEntity(new UrlEncodedFormEntity(dlbd));
32 // Post请求
33 CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpPost) ;
34 // 获取响应头
35 Header locationHeader = closeableHttpResponse.getFirstHeader("Location");
36 // Get请求
37 String header = locationHeader.getValue();
38 HttpGet httpGet = new HttpGet(header) ;
39 ResponseHandler<String> responseHandler = new BasicResponseHandler();
40 String responseBody = closeableHttpClient.execute(httpGet, responseHandler);
41 System.out.println(responseBody);
42 }
43 }

登录成功
如果之前在网页登录失败次数过多,可能会导致爬虫模拟登录需要验证码,而此处是考虑不需要验证码的情况,所以可能会登录失败,解决方法可以是清理本机Cookie。
Java爬虫——人人网模拟登录的更多相关文章
- Python爬虫之模拟登录微信wechat
不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息 ...
- Python爬虫-百度模拟登录(二)
上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...
- Java 爬虫遇到需要登录的网站,该怎么办?
这是 Java 网络爬虫系列博文的第二篇,在上一篇 Java 网络爬虫,就是这么的简单 中,我们简单的学习了一下如何利用 Java 进行网络爬虫.在这一篇中我们将简单的聊一聊在网络爬虫时,遇到需要登录 ...
- Python爬虫-百度模拟登录(一)
千呼万唤屎出来呀,百度模拟登录终于要呈现在大家眼前了,最近比较忙,晚上又得早点休息,这篇文章写了好几天才完成.这个成功以后,我打算试试百度网盘的其他接口实现.看看能不能把服务器文件上传到网盘,好歹也有 ...
- Python 爬虫之模拟登录
最近应朋友要求,帮忙爬取了小红书创作平台的数据,感觉整个过程很有意思,因此记录一下.在这之前自己没怎么爬过需要账户登录的网站数据,所以刚开始去看小红书的登录认证时一头雾水,等到一步步走下来,最终成功, ...
- java 使用htmlunit模拟登录爬取新浪微博页面
mport java.io.IOException;import java.net.MalformedURLException;import com.gargoylesoftware.htmlunit ...
- Android(Java) 模拟登录知乎并抓取用户信息
前不久.看到一篇文章我用爬虫一天时间"偷了"知乎一百万用户.仅仅为证明PHP是世界上最好的语言,该文章中使用的登录方式是直接复制cookie到代码中,这里呢,我不以爬信息为目的.仅 ...
- 模拟登录新浪微博(Python)
PC 登录新浪微博时, 在客户端用js预先对用户名.密码都进行了加密, 而且在POST之前会GET 一组参数,这也将作为POST_DATA 的一部分. 这样, 就不能用通常的那种简单方法来模拟POST ...
- Java 爬虫遇上数据异步加载,试试这两种办法!
这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...
随机推荐
- 有关CUBLAS中的矩阵乘法函数
关于cuBLAS库中矩阵乘法相关的函数及其输入输出进行详细讨论. ▶ 涨姿势: ● cuBLAS中能用于运算矩阵乘法的函数有4个,分别是 cublasSgemm(单精度实数).cublasDgemm( ...
- JavaScript变量存储浅析
var test=100; function foo(){ console.log(test);//undefined var test=200; console.log(test); } 我们明明定 ...
- 高性能Ajax
XMLHttpRequest javascript 高性能的Ajax应该考虑数据传输技术和数据格式,以及其他的如数据缓存等优化技术. 一.请求数据 请求数据的常用技术有XHR,动态脚本注入.Mul ...
- number 类型转换 符号
function convert(sValue, sDataType) { switch(sDataType) { case “int”: return parseIn ...
- display:table 表格布局
table 布局最大的特点 1.同行等高 2.宽度自动调节 那么table-cell是不是具备这个特点呢?答案是yes,为什么呢?css中有一个有意思的规则“创建匿名表格元素”. 拿table ...
- Jenkins TFS配置
1. 在Jenkins中安装TFS插件 2. 在Build Server上安装tfs客户端程序,用来访问代码服务器获取代码, 这一部是由TFS Anywhere完成的 下载TFS Anywhere h ...
- Unity中的Mono & Linux上编译Mono的流程
前段时间编译了一下Unity的Mono,看了很多相关的文章,也遇到很多新坑.所以来总结一下,加深自己对Mono的理解 为什么Unity可以跨平台运行呢 通常Unity的脚本有C#.JS.Boo.不过现 ...
- Spring MVC体系结构和处理请求控制器
Spring MVC体系结构和处理请求控制器 一:MVC设计模式: (1.)数据访问接口:DAO层 (2.)处理业务逻辑层:Service层 (3.)数据实体:POJO (4.)负责前段请求接受并处理 ...
- [转载] NodeJS无所不能:细数十个令人惊讶的NodeJS开源项目
转载自http://www.searchsoa.com.cn/showcontent_79099.htm 在几年的时间里,Node.JS逐渐发展成一个成熟的开发平台,吸引了许多开发者.有许多大型高流量 ...
- .net SignalR winform 推送广播
最近在做一个项目,需要用到服务端主动推送给客户端,最开始用的是自己比较顺手的Remoting,可后来发现把服务端架到外网上,就猴子它哥了,后来又尝试WCF,虽然能推送,但是推了几次也猴子它哥了,后来找 ...