如何获取新浪微博的登录参数
1、用Chrome的开发者工具或者Firefox的Firebug来进行抓包
找到login.php文件,就可以看到此文件的一些请求参数,
?
- Request URL:http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.22)
- Request Method:POST
- Status Code:
200 OK
- Request Headersview source
- Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
- Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
- Accept-Encoding:gzip,deflate,sdch
- Accept-Language:zh-CN,zh;q=0.8
- Cache-Control:max-age=0
- Connection:keep-alive
- Content-Length:380
- Content-Type:application/x-www-form-urlencoded
- 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
- Host:login.sina.com.cn
- Origin:http://weibo.com
- Referer:http://weibo.com/
- User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19
- Query String Parametersview decoded
- client:ssologin.js(v1.3.22)
- Form Dataview decoded
- entry:weibo
- gateway:1
- from:
- savestate:0
- useticket:1
- vsnf:1
- ssosimplelogin:1
- su:bmlfd2Vpd2VpJTQwMTYzLmNvbQ%3D%3D
- service:miniblog
- servertime:1337774007
- nonce:WSFYJG
- pwencode:wsse
- sp:1dd5068aa2fd9aee6cd7d756227780007d3a0592
- encoding:UTF-8
- prelt:980
- url:http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack
- returntype:META
- Response Headersview source
- Cache-Control:no-cache
- Connection:close
- Content-Encoding:gzip
- Content-Length:414
- Content-Type:text/html
- Date:Wed, 23 May 2012 11:53:30 GMT
- P3P:CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
- Pragma:no-cache
- Server:Apache
- 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
- Vary:Accept-Encoding
- 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);}}?