当登陆网站时,网站通常会进行csrftoken校验,这是为了防止所谓的CSRF攻击,通常csrftoken都放在用户的cookies中,本文主要讲解如何获取这个token,并如何使用这个token。
一、获取cookies
httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("你的网址");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
如此便获取了网站的cookies。
二、获取CSRF token
获取CSRF token相对较为简单,只要找到包含CSRF token的cookies并使用如下函数即可获取:
/**
* Get Crsf From Cookies ...
* @param cookie
* @return
*/
private static String getCsrffromCookie( String cookie ) {
return cookie.substring(cookie.indexOf("value: ") + 7, cookie.indexOf("value: ") + 7 + 64);
}
三、使用CSRF token
CSRF token通常使用在HttpPost方法中,
如在登陆时:
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("username", username));
nvps.add(new BasicNameValuePair("password", password));
nvps.add(new BasicNameValuePair("csrfmiddlewaretoken", csrf));
然后使用
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
即可。