前言
上篇文章(HttpClient技术)(今日头条系列)HttpClient模拟今日头条登录中,对于近日的头条的登录方法,已经被我模拟破解了,那么这次就分享一下,如果使用Java HttpClient模拟发布文章,头条中的文章类型,有4中,分别是文字文章,带图片的文章,图集和视频类文章,每一种发布的方式略有不同,今天就先分享,如何使用HttpClient模拟发布纯文字类文章。
步骤和方法
模拟发布,主要是模拟发布的post请求的方法和内容,这些在前面的抓包方法中,都有介绍,先介绍一下使用的语言和工具:
使用语言:Java
使用Jar包: Java HttpClient 4.x核心Jar包
开发工具:MyEclipse 8
步骤如下:
1 模拟进入发布内容页面
2 获取发布页面需要发布的参数
3 请求post内容,模拟发布
核心代码分享如下:
//模拟Post请求,发布内容 g3 = new HttpPost("https://mp.toutiao.com/core/article/edit_article_post/?source=mp&type=article") ; g3.setHeader("Accept", "text/javascript, text/html, application/xml, text/xml, */*") ; g3.setHeader("X-CSRFToken", "undefined") ; g3.setHeader("X-Requested-With", "XMLHttpRequest") ; g3.setHeader("Accept-Language", "zh-CN") ; g3.setHeader("Cache-Control", "no-cache") ; g3.setHeader("Connection", "Keep-Alive") ; g3.setHeader("Referer", "https://mp.toutiao.com/profile_v2/publish") ; g3.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko") ; g3.setHeader("Content-Type", "application/x-www-form-urlencoded") ; String formatcontent = "<p>"+content+"</p>" ; List<NameValuePair> qparams = new ArrayList<NameValuePair>(); qparams.add(new BasicNameValuePair("article_type","0")); //0 文章 qparams.add(new BasicNameValuePair("title", title)); qparams.add(new BasicNameValuePair("content", formatcontent)); qparams.add(new BasicNameValuePair("claim_origin", "0")); qparams.add(new BasicNameValuePair("article_ad_type", "2")); qparams.add(new BasicNameValuePair("add_third_title","0")); qparams.add(new BasicNameValuePair("recommend_auto_analyse","0")); qparams.add(new BasicNameValuePair("tag","")); qparams.add(new BasicNameValuePair("article_label","")); qparams.add(new BasicNameValuePair("is_fans_article", "0")); qparams.add(new BasicNameValuePair("govern_forward", "0")); qparams.add(new BasicNameValuePair("push_status", "0")); qparams.add(new BasicNameValuePair("push_android_title","")); qparams.add(new BasicNameValuePair("push_android_summary","")); qparams.add(new BasicNameValuePair("push_ios_summary","")); qparams.add(new BasicNameValuePair("timer_status", isImediate? "0" : "1")); //0立刻发送 1 定时发送 qparams.add(new BasicNameValuePair("timer_time", publishTime)); // 必须24小时之内 qparams.add(new BasicNameValuePair("column_chosen", "0")); qparams.add(new BasicNameValuePair("pgc_id", "0")); qparams.add(new BasicNameValuePair("pgc_feed_covers","[]")); qparams.add(new BasicNameValuePair("from_diagnosis","0")); qparams.add(new BasicNameValuePair("save","1")); UrlEncodedFormEntity params = new UrlEncodedFormEntity(qparams, "UTF-8"); g3.setEntity(params); response2 = httpClient.execute(g3); sg1 = EntityUtils.toString(response2.getEntity(),"utf-8") ; sg1 = StringRandomUtils.unicodeToString(sg1) ; System.out.println(sg1);
总结:
相信分享完整套的头条从登陆,到文章的自动发布流程后,以后发布文章,就可以通过模拟工具在后台进行发布了。如果有全部主流网站的登录和发布的流程,那么一篇文章,就可以很容易的发布到新浪微博,今日头条,腾讯微博,喜马拉雅,蜻蜓等主流自媒体网站了,这样一个平台的前景是很可观的了,当然了,Java爬虫和批量自动化操作的技术难度,也是非常大的了。
好了,这里说多了,有些跑题,后面会继续分享如何发布带图片的,图集和视频的文章,谢谢大家关注。