读书人

怎么获取新浪微博的登录参数

发布时间: 2012-07-01 13:15:00 作者: rapoo

如何获取新浪微博的登录参数

1、用Chrome的开发者工具或者Firefox的Firebug来进行抓包

找到login.php文件,就可以看到此文件的一些请求参数,

?

  1. Request URL:http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.22)
  2. Request Method:POST
  3. Status Code:怎么获取新浪微博的登录参数200 OK
  4. Request Headersview source
    1. Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    2. Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
    3. Accept-Encoding:gzip,deflate,sdch
    4. Accept-Language:zh-CN,zh;q=0.8
    5. Cache-Control:max-age=0
    6. Connection:keep-alive
    7. Content-Length:380
    8. Content-Type:application/x-www-form-urlencoded
    9. Cookie:Apache=00000073.8a4c255d.4fbcca08.3dec6e4b; SINAGLOBAL=00000073.8a51255d.4fbcca08.f60eaf69; U_TRS1=00000073.a032426f.4fbccf5b.de1e4686; U_TRS2=00000073.a044426f.4fbccf5b.84a48193; UOR=,www.sina.com.cn,; ULV=1337773919392:1:1:1:00000073.8a4c255d.4fbcca08.3dec6e4b:; SGUP=0; _s_upa=2; vjuids=1c9c46cf8.137798a2e07.0.baab928e; vjlast=1337773928; __utma=269849203.1663258918.1337773929.1337773929.1337773929.1; __utmb=269849203.1.10.1337773929; __utmc=269849203; __utmz=269849203.1337773929.1.1.utmcsr=login.sina.com.cn|utmccn=(referral)|utmcmd=referral|utmcct=/crossdomain2.php; ULOGIN_IMG=fe55e24c15322ed8e655ce949078e67299d6
    10. Host:login.sina.com.cn
    11. Origin:http://weibo.com
    12. Referer:http://weibo.com/
    13. User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19
  5. Query String Parametersview decoded
    1. client:ssologin.js(v1.3.22)
  6. Form Dataview decoded
    1. entry:weibo
    2. gateway:1
    3. from:
    4. savestate:0
    5. useticket:1
    6. vsnf:1
    7. ssosimplelogin:1
    8. su:bmlfd2Vpd2VpJTQwMTYzLmNvbQ%3D%3D
    9. service:miniblog
    10. servertime:1337774007
    11. nonce:WSFYJG
    12. pwencode:wsse
    13. sp:1dd5068aa2fd9aee6cd7d756227780007d3a0592
    14. encoding:UTF-8
    15. prelt:980
    16. url:http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack
    17. returntype:META
  7. Response Headersview source
    1. Cache-Control:no-cache
    2. Connection:close
    3. Content-Encoding:gzip
    4. Content-Length:414
    5. Content-Type:text/html
    6. Date:Wed, 23 May 2012 11:53:30 GMT
    7. P3P:CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
    8. Pragma:no-cache
    9. Server:Apache
    10. Set-Cookie:SUE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, SUP=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, ALF=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, ALC=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=login.sina.com.cn, SUR=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, SSOLoginState=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn
    11. Vary:Accept-Encoding
    12. via_host:38.62

?

?

2、用httpclient4.x登录新浪微博源码(转)

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;?import org.apache.commons.io.IOUtils;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;?public class SinaLogin {?private final static HttpClient client = new DefaultHttpClient();?/** * 抓取网页 *  * @param url * @throws IOException */static String get(String url) throws IOException {HttpGet get = new HttpGet(url);HttpResponse response = client.execute(get);System.out.println(response.getStatusLine());HttpEntity entity = response.getEntity();?String result = dump(entity);get.abort();?return result;}?/** * 执行登录过程 *  * @param user * @param pwd * @param debug * @throws IOException */static void login(String user, String pwd) throws IOException {HttpPost post = new HttpPost("http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.14)");post.setHeader("User-Agent","Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0");post.setHeader("Referer", "http://weibo.com/");post.setHeader("Content-Type", "application/x-www-form-urlencoded");?// 登录表单的信息List<NameValuePair> qparams = new ArrayList<NameValuePair>();qparams.add(new BasicNameValuePair("entry", "miniblog"));qparams.add(new BasicNameValuePair("gateway", "1"));qparams.add(new BasicNameValuePair("from", ""));qparams.add(new BasicNameValuePair("savestate", "0"));qparams.add(new BasicNameValuePair("useticket", "1"));qparams.add(new BasicNameValuePair("ssosimplelogin", "1"));qparams.add(new BasicNameValuePair("service", "miniblog"));// servertime=1309164392// nonce=PJZCHM// qparams.add(new BasicNameValuePair("pwencode", "wsse"));qparams.add(new BasicNameValuePair("encoding", "utf-8"));qparams.add(new BasicNameValuePair("url","http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack"));qparams.add(new BasicNameValuePair("returntype", "META"));?qparams.add(new BasicNameValuePair("username", user));qparams.add(new BasicNameValuePair("password", pwd));?UrlEncodedFormEntity params = new UrlEncodedFormEntity(qparams, "UTF-8");post.setEntity(params);?// Execute the requestHttpResponse response = client.execute(post);post.abort();// 新浪微博登录没有301,302之类的跳转;而是返回200,然后用javascript实现的跳转// int statusCode = response.getStatusLine().getStatusCode();// if ((statusCode == HttpStatus.SC_MOVED_PERMANENTLY)// || (statusCode == HttpStatus.SC_MOVED_TEMPORARILY)// || (statusCode == HttpStatus.SC_SEE_OTHER)// || (statusCode == HttpStatus.SC_TEMPORARY_REDIRECT)) {// // 此处重定向处理 此处还未验证// String newUri = response.getLastHeader("Location").getValue();// get(newUri);// }?// Get hold of the response entityHttpEntity entity = response.getEntity();// 取出跳转的url// location.replace("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&ticket=ST-MTkxODMxOTI0Nw==-1309224549-xd-263902F174B27BAB9699691BA866EFF2&retcode=0");String location = getRedirectLocation(dump(entity));get(location);}?private static String getRedirectLocation(String content) {String regex = "location\\.replace\\(\'(.*?)\'\\)";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(content);?String location = null;if (matcher.find()) {location = matcher.group(1);}?return location;}?/** * 打印页面 *  * @param entity * @throws IOException */private static String dump(HttpEntity entity) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent(), "utf8"));?//return EntityUtils.toString(entity);return IOUtils.toString(br);}?public static void main(String[] args) throws IOException {login("username", "password");String result = get("http://t.sina.com.cn/pub/tags");System.out.println(result);}}

?

读书人网 >Web前端

热点推荐