关于使用jsoup以访问接口的方式进行爬虫(涵盖知识 jsoup模拟发送post请求)

仍是以b站为例,不使用selenium的方式来通过接口实现在b站发送评论

		发送评论都是post请求,需要登录才能进行后继工作,所以咱的任务很清晰 

先寻找对应的评论接口,这里我们通过抓包工具,或者f12,找出这个发送评论的接口,这里,我已经找出来了,就是这个添加评论接口仔细分析这个接口,发现请求体里的数据就是咱们刚才发送的评论的数据,咱们只要把想要发送的评论,数据添加到这个请求体里面就行,所以接下来就是模拟一次post请求

在发送post请求之前有一有三个比较重要的参数需要设置一下,否则容易被识别出来是爬虫

 		header.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36");
 		//代表请求发出的地址
        header.put("Referer", "https://www.bilibili.com/video/BV13W411c7Yf?from=search&seid=14945655003133214162");
        header.put("Origin","https://www.bilibili.com");
        //这个代表啦时间戳,能够证明用户数据存在的真实性,具体加不加看接口的请求体有没有这个参数
          data.put("rnd", String.valueOf(new Date().getTime()));

然后就是给这个请求加上cookie,跳过登录,代码如下

        connect.cookie("Cookie", "sid=******; _uuid=9B1EBC53-24DE-3C3B-5478-C7B04BE21BFA39066infoc; buvid3=41EFFC96-BFEA-4264-96FE-6C4594B8888453923infoc; LIVE_BUVID=AUTO3115929677890054; bp_video_offset_221749181=404765698027349726; bp_t_offset_221749181=404766372336171715; CURRENT_FNVAL=16; rpdid=|(um~uYJJm)m0J'ulmJ|)Jm|Y; bp_t_offset_619772228=405164167916667135; DedeUserID=619772228; DedeUserID__ckMd5=e9b2d53e131edb2b; SESSDATA=**********************9e*71; bili_jct=2d1cd64f8d95d254d3dc44077a7df701; CURRENT_QUALITY=0; PVID=10; bp_video_offset_619772228=409109640839843003");

之后发送就行啦,完整代码如下

public static void main(String[] args) throws Exception {
        Connection connect = Jsoup.connect("https://api.bilibili.com/x/v2/reply/add");
        Map<String, String> header = new HashMap<String, String>();
        header.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36");
        header.put("Referer", "https://www.bilibili.com/video/BV13W411c7Yf?from=search&seid=14945655003133214162");
        header.put("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
        header.put("Origin","https://www.bilibili.com");

        // 带参数开始
        Set<Cookie> read = Utils.read("bilixiao.txt");
        connect.headers(header);
        connect.cookie("Cookie", "sid=izrhxjpb; _uuid=9B1EBC53-24DE-3C3B-5478-C7B04BE21BFA39066infoc; buvid3=41EFFC96-BFEA-4264-96FE-6C4594B8888453923infoc; LIVE_BUVID=AUTO3115929677890054; bp_video_offset_221749181=404765698027349726; bp_t_offset_221749181=404766372336171715; CURRENT_FNVAL=16; rpdid=|(um~uYJJm)m0J'ulmJ|)Jm|Y; bp_t_offset_619772228=405164167916667135; DedeUserID=619772228; DedeUserID__ckMd5=e9b2d53e131edb2b; SESSDATA=1d509e2c%2C1609413643%2Cb3f9e*71; bili_jct=2d1cd64f8d95d254d3dc44077a7df701; CURRENT_QUALITY=0; PVID=10; bp_video_offset_619772228=409109640839843003");		
        connect.data("oid", "25066310");
        connect.data("type", "1");
        //这里的message就是咱们要发送的评论数据,data里其他的都是请求体里自带的参数,意义仍不明
        connect.data("message", "厉害");
        connect.data("plat", "1");
        connect.data("jsonp", "jsonp");
        connect.data("csrf", "2d1cd64f8d95d254d3dc44077a7df701");
        // 带参数结束
        Document document = connect.ignoreContentType(true).post();
        System.out.println(document.title());
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值