百度站长工具api调用

百度站长工具api调用
百度站长工具api调用

百度站长工具API调用

作者aosfather

版本 1.0

sina微博@aosfather

增加站点进行管理的流程

1. 登录到百度站长工具系统

2. 调用增加站点服务

3. 接收返回的数据得知站点的ID

4. 发送请求站点验证码的服务

5. 获取验证码

6. 将验证码写到站点根目录下,取名bdsitemap.txt

7. 调用请求验证的服务

百度登录过程

1. 请求https://https://www.360docs.net/doc/bc4499580.html,/v2/api/?getapi&class=login&tpl=mn&tangram=true获

取一个cookie

2. 再次请求https://https://www.360docs.net/doc/bc4499580.html,/v2/api/?

getapi&class=login&tpl=mn&tangram=true获取token,解析返回的数据,通过正则表达式匹配("bdPass.api.params.login_token='(.*?)';")得到token.

3. 发送登录请求https://https://www.360docs.net/doc/bc4499580.html,/v2/api/?login

4. 记录下BAIDUID、BDUSS、SSUDB,用于发送(另起httpclient)调用站长工具服务的

URL时候用。

代码示例

代码基于httpclient3

HttpClient httpClient = new HttpClient();

httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

//获取?一个cookie

GetMethod httpget = new GetMethod("https://https://www.360docs.net/doc/bc4499580.html,/v2/api/?

getapi&class=login&tpl=mn&tangram=true");

httpClient.executeMethod(httpget);

//获取token

String token=null;

GetMethod getToken=new GetMethod("https://https://www.360docs.net/doc/bc4499580.html,/v2/api/?

getapi&class=login&tpl=mn&tangram=true");

httpClient.executeMethod(getToken);

Pattern tokenp=https://www.360docs.net/doc/bc4499580.html,pile("bdPass.api.params.login_token='(.*?)';"); Matcher m=tokenp.matcher(getToken.getResponseBodyAsString());

if(m.find()){

token=m.group(1);

}

//登录

PostMethod httppost = new PostMethod("https://https://www.360docs.net/doc/bc4499580.html,/v2/api/? login");

//构造登录请求post的数据

httppost.setParameter("tpl", "mn");

httppost.setParameter("callback","parent.bdPass.api.login._postCallback"); httppost.setParameter("staticpage","https://https://www.360docs.net/doc/bc4499580.html,/v3Jump.html") ;

httppost.setParameter("codestring","");

httppost.setParameter("ppui_logintime", "10484");

httppost.setParameter("u", "");

httppost.setParameter("charset","utf-8");

httppost.setParameter("index","0");

httppost.setParameter("password","***************");//密码

httppost.setParameter("loginType","1");

httppost.setParameter("safeflg", "0");

httppost.setParameter("isphone", "false");

httppost.setParameter("username", "aosfather");//登录?用户名

httppost.setParameter("verifycode", "");

httppost.setParameter("mem_pass", "on");

httppost.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)");

httppost.setRequestHeader("Host","https://www.360docs.net/doc/bc4499580.html,");

httppost.setParameter("token",token);//刚才解析出来的token。

httpClient.executeMethod(httppost);

//获取cookie中的值

Cookie[] cookies=httpClient.getState().getCookies();

String tmpcookies= "";

for(Cookie c:cookies){

if(c.getName().equals("BAIDUID")||c.getName().equals("BDUSS")||c.getName().e quals("SSUDB"))

tmpcookies += c.toString()+";";

}

//-------------------华丽的分割线,下?面的代码?用于验证,访问百度的其它服务时候,是否认为我们已经登录了--------------//

//验证?一下,访问baidu的??网站,你会发现已经登录了。

//另建?一个httpclient

HttpClient client=new HttpClient();

//------------访问百度-------------//

GetMethod getMethod = new GetMethod("https://www.360docs.net/doc/bc4499580.html,"); getMethod.setRequestHeader("cookie", tmpcookies);//设置cookie值,将登录返回的信息设定进去

int statusCode = client.executeMethod(getMethod) ;

if (statusCode != HttpStatus.SC_OK)

{

System.err.println("Method failed: "

+ getMethod.getStatusLine());

}

//将返回信息打印出来,你会看到找到账号信息,就说明百度已经认可你登录了。否则返回的字符中有“登录注册”的字眼。

byte[] responseBody = getMethod.getResponseBody();

System.out.println(new String(responseBody));

相关主题
相关文档
最新文档