当前位置: 首页 > news >正文

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。

相关文章:

  • 服务器小白-MYSQL基础安装配置
  • [译] 听说你想学 React.js ?
  • 学习CSS的思路(转)
  • Js基础知识学习
  • 对PostgreSQL源代码中的is_pushed_down的理解
  • Readings in Databases
  • 使用python处理selenium中的鼠标悬停问题
  • nginx 防火墙、权限问题
  • Swift 2 0 所有新特性
  • Xcode真机调试出现The account '***' has no team with ID '***'的解决方案
  • 关于Autolayout制作动画的坑
  • iOS解析HTMl标签以及开发中的一些坑
  • iOS10判断摄像机是否可用
  • Android类似微信图片选择器
  • 使用MaxCompute搭建社交好友推荐系统
  • 【EOS】Cleos基础
  • 08.Android之View事件问题
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • express.js的介绍及使用
  • Javascript Math对象和Date对象常用方法详解
  • Nodejs和JavaWeb协助开发
  • scala基础语法(二)
  • uni-app项目数字滚动
  • 代理模式
  • 排序算法之--选择排序
  • 前端相关框架总和
  • 什么是Javascript函数节流?
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • #android不同版本废弃api,新api。
  • #define、const、typedef的差别
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #传输# #传输数据判断#
  • (function(){})()的分步解析
  • (三)uboot源码分析
  • (五)IO流之ByteArrayInput/OutputStream
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • *1 计算机基础和操作系统基础及几大协议
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @Transient注解
  • [ linux ] linux 命令英文全称及解释
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [Android]一个简单使用Handler做Timer的例子
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [APIO2012] 派遣 dispatching
  • [ASP]青辰网络考试管理系统NES X3.5
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [CF494C]Helping People