做的网站在百度找不到了,广州关键词排名推广,如果查询网站内页的收录情况,做网站服务器e3这几天一直在研究新浪微博的爬虫#xff0c;发现爬取微博的数据首先要登录。本来打算是通过账号和密码模拟浏览器登录。但是现在微博的登录机制比较复杂。通过账号密码还没有登录成功QAQ。所以就先记录下#xff0c;通过cookie直接访问自己的微博主页。微博登录的认证过程微博…这几天一直在研究新浪微博的爬虫发现爬取微博的数据首先要登录。本来打算是通过账号和密码模拟浏览器登录。但是现在微博的登录机制比较复杂。通过账号密码还没有登录成功QAQ。所以就先记录下通过cookie直接访问自己的微博主页。微博登录的认证过程微博登录的细节在其他的博客里已经有了详细的介绍。大概就是用户输入账号和密码后与服务器产生几次会话。若认证成功后微博的服务器会返回给浏览器一个cookie。在之后访问微博的其他内容时通过发送这个cookie就能正常访问微博了。所以用过cookie访问微博过程就简化为了获取cookie然后通过程序模拟浏览器访问微博首页。获取微博的cookie通过抓包软件或浏览器自带的调试工具都可以抓取网页的cookie。本文使用的是火狐浏览器的HttpFox 插件来获取微博的cookie。1打开微博首页打开HttpFox2输入用户名和密码勾选“记住我”点击登录。点击登录后我们可以看到HttpFox下产生了很多的URL。进入主页后在HTTPFox中找到你主页对应的URL如下图点击主页的URL后我们可以看见左下方的一些信息。包括“Headers”“Cookies”等。3在“Headers”中可以看到有一条“Cookie”的信息。这个就是我们所需要的cookie了。点击右键保存cookie。至此就获取了我们登录时所要的cookie了代码实现由于我们是直接通过cookie进行的登录。所以少了很多认证的过程。直接使用HttpClient的相关包带上之前获取的cookie就可以访问个人首页。获取了首页我们就可以通过正则表达式来分析微博数据了。import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.config.Registry;import org.apache.http.config.RegistryBuilder;import org.apache.http.cookie.CookieSpec;import org.apache.http.cookie.CookieSpecProvider;import org.apache.http.impl.client.BasicCookieStore;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.cookie.DefaultCookieSpec;import org.apache.http.message.BasicHeader;import org.apache.http.protocol.HttpContext;import org.apache.http.util.EntityUtils;/*****author zkw**/public class cookieLogin {private HttpClient client;private HttpPost post;private HttpGet get;private BasicCookieStore cookieStore;public cookieLogin() {//cookie策略不设置会拒绝cookie rejected设置策略保存cookie信息cookieStore new BasicCookieStore();CookieSpecProvider myCookie new CookieSpecProvider() {public CookieSpec create(HttpContext context) {return new DefaultCookieSpec();}};Registry rg RegistryBuilder. create().register(myCookie, myCookie).build();client HttpClients.custom().setDefaultCookieStore(cookieStore).setDefaultCookieSpecRegistry(rg).build();get new HttpGet();post new HttpPost();}public void Login() throws ClientProtocolException, IOException, URISyntaxException {String LoginUrl 你的微博主页网址;get.setURI(new URI(LoginUrl));get.addHeader(Host, weibo.com);get.addHeader(User-Agent, Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0);get.addHeader(Accept, */*);get.addHeader(Accept-Language, zh-CN,zh;q0.8,en-US;q0.5,en;q0.3);get.addHeader(Accept-Encoding, gzip, deflate);get.addHeader(Referer, http://weibo.com/);get.addHeader(new BasicHeader(Cookie, 上述获取的cookie值));HttpResponse resp client.execute(get);HttpEntity entity resp.getEntity();String cont EntityUtils.toString(entity);System.out.println(获取的微博内容: cont);}public HttpClient getClient() {return client;}public void setClient(HttpClient client) {this.client client;}public HttpPost getPost() {return post;}public void setPost(HttpPost post) {this.post post;}public HttpGet getGet() {return get;}public void setGet(HttpGet get) {this.get get;}public BasicCookieStore getCookieStore() {return cookieStore;}public void setCookieStore(BasicCookieStore cookieStore) {this.cookieStore cookieStore;}public static void main(String[] args) throws ClientProtocolException, IOException, URISyntaxException {new cookieLogin().Login();}}总结通过cookie登录微博是一种快捷方式但是存在不少问题。所以博主还在研究微博账号认证过程希望过几天能有所突破QAQ。