首页 > 编程语言 >java实现登录微博(通过cookie)

java实现登录微博(通过cookie)

时间:2023-01-04 11:25:40浏览次数:63  
标签:java get http addHeader 微博 cookie import apache org

1.获取cookie

1.打开微博登录页面,浏览器F12进行抓包,登录。
2.在微博首页地址栏找到url

3.在浏览器调试页面找到Referer与地址栏相同的url

2.代码

1.加入依赖

        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.10.1</version>
        </dependency>

        <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.5</version>
        </dependency>
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
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.CloseableHttpClient;
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;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;


public class cookieLogin {
    private CloseableHttpClient 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<CookieSpecProvider> rg = RegistryBuilder.<CookieSpecProvider> 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("Accept", "*/*");
        get.addHeader("Accept-Encoding", "gzip, deflate, br");
        get.addHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
        get.addHeader("Cache-Control" , "no-cache");
        get.addHeader("Connection" , "keep-alive");
        get.addHeader("Content-Type" , "application/x-www-form-urlencoded");
        get.addHeader(new BasicHeader("Cookie", "cookie"));
        get.addHeader("Host", "weibo.com");
        get.addHeader("Pragma", "no-cache");
        get.addHeader("Referer", "你的微博主页网址");
        get.addHeader("Sec-Fetch-Dest", "empty");
        get.addHeader("Sec-Fetch-Mode", "cors");
        get.addHeader("Sec-Fetch-Site", "same-origin");
        get.addHeader("TE", "trailers");
        get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0");
        get.addHeader("X-Requested-With", "XMLHttpRequest");
        HttpResponse resp = client.execute(get);
        HttpEntity entity = resp.getEntity();
        String cont = EntityUtils.toString(entity);
        System.out.println("获取的微博内容:" + cont);

    }

    public CloseableHttpClient getClient() {
        return client;
    }

    public void setClient(CloseableHttpClient 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();
    }
}

测试

参考;https://www.cnblogs.com/qianzf/p/7747899.html

标签:java,get,http,addHeader,微博,cookie,import,apache,org
From: https://www.cnblogs.com/klearning/p/17024326.html

相关文章

  • JAVA问题总结之28--读取某目录下所有文件
    JAVA问题总结之28–读取某目录下所有文件packagejava9231;importjava.io.File;publicclassforReadNFile{publicstaticvoidmain(String[]args){//TOD......
  • JAVA问题总结之27--创建100个文件
    JAVA问题总结之27–创建100个文件:packagejava9231;importjava.io.File;importjava.io.IOException;publicclassforCreateNFile{publicstaticvoidmain(String[]......
  • 基因数据处理119之java调用SSW在linux下运行
    更多代码请见:​​https://github.com/xubo245​​基因数据处理系列1.解释测试自带Example:xubo@xubo:~/xubo/tools/Complete-Striped-Smith-Waterman-Library/src$scala-D......
  • Scala学习5之scala与java的不同之总结1
    1.scala不同声明变量的具体类型,只需要声明是var还是val,即变量或不变量,由编译器自动判断。而java需要具体声明,比如Int,String2.scala函数声明返回值是声明在后面,而且可以不......
  • JAVA问题总结之22--Arraylist集合的操作
    JAVA问题总结之22--Arraylist集合的操作:packagecom.atguigu.java1;importjava.util.ArrayList;importjava.util.List;importorg.junit.Test;publicclassTestList{......
  • Scala学习6之scala与java的不同之总结2-重写override
    scala与java的不同之总结21.重写  scala:overridedefgetAge(){}java:@overridepublicIntgetAge(){}2.scala可以使用private[this]来更细化限定权限,private[this]可以......
  • Scala学习7之scala与java不同之总结3-特质和接口
    1.scala和java为了避免出现菱形继承的问题,都只能继承一个类,但都可以继承多个特质(scala)或者接口(java);java中使用接口interfere,接口里面只能包含抽象方法,不能包含字段,也不能包......
  • Java问题总结之31-成员变量声明
    [修饰符]   类型   变量名;修饰符有:①public。指明变量为公有,即程序中的其他类均可访问此类中的变量。②protected.指明变量为受保护访问。可被同一个......
  • JavaScript学习
    1、书写位置​ 行内式(内嵌式):写在元素内部,一般不常用。a:<ahref="javascript:alert('11');">超链接</a>非a:<buttononclick="alert('11')"></button>​ 内部式:可......
  • 「java技术干货」switch分支结构详解
    前言在上一篇文章中,壹哥给大家介绍了Java里的顺序、分支、循环结构的概念,并且重点给大家讲解了分支结构中的条件分支。并在条件分支中,详细地给大家讲解了if条件分支的使用......