1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java 模拟手机版微博登录_HttpClient 模拟登录手机版新浪微博

java 模拟手机版微博登录_HttpClient 模拟登录手机版新浪微博

时间:2021-02-23 02:58:54

相关推荐

java 模拟手机版微博登录_HttpClient 模拟登录手机版新浪微博

我们要做的就是获取服务器需要的数据,然后用HttpClient模拟浏览器提交。

有几点需要说明一下:

go标签内的href是我们第二次请求的地址,通过这个地址来获取cookie。

用户密码那个field的name属性是随机变化的,需要先获取它然后提交。

下面是整个源代码。

思路:先获取表单的值,然后用POST方法提交。注意添加RequestHeader信息,否则会被服务器拒绝(403)。

/*** 获取手机版微博的cookies

*@paramusername

* 微博用户名

*@parampassword

* 微博密码

*@returnCookie[]*/

publicCookie[] getMCookies(String username, String password){

Cookie[] cookies= null;

HttpClient client;

PostMethod post= null;try{

Document doc= Jsoup.connect("/prog/wapsite/sso/login.php").get();

Elements elements= doc.getElementsByTag("postfield");

String randUrl= doc.getElementsByTag("go").first().attr("href");

String pwName= elements.get(1).attr("name");

String vkValue= elements.get(2).attr("value");

String backURL= elements.get(4).attr("value");

String backTitle= elements.get(5).attr("value");

String url= "/prog/wapsite/sso/"+randUrl;

post= newPostMethod(url);

post.setRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.77 Safari/537.1");

post.setRequestHeader("Referer", "/");

post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

post.setParameter("mobile", username);

post.setParameter(pwName,password);

post.setParameter("vk", vkValue);

post.setParameter("remember", "on");

post.setParameter("backURL", backURL);

post.setParameter("backTitle", backTitle);

post.setParameter("submit", "1");

client= newHttpClient();

client.executeMethod(post);

cookies=client.getState().getCookies();

}catch(IOException e){

e.printStackTrace();

}finally{

post.abort();

}returncookies;

}

如果用户名密码正确的话,应该就可以获得cookie了。

接下来如果想要访问某些网页只需要带上cookie就行了。

由于新浪的网页可能会变化,所以不保证此方法一直能用,不过大体思路应该是不会变的。

转:/e241138/archive//09/16/2687120.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。