精华内容
下载资源
问答
  • 今日头条API

    千次阅读 2019-03-18 11:50:07
    <ul id="getnownew"></ul>     $(document).ready(function(){ ..."http://ic.snssdk.com/2/article/v25/stream/?category=news_hot&count=20&min_behot_time=1457659116&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457672153&loc_mode=5&lac=4527&cid=28883&iid=3839760160&device_id=12246291682&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=19&os_version=4.4.4&uuid=352284045861006&openudid=84c1c7b192991cc6"... success: function (data) { var obj = data.data; var num=1; ... var str = "<li>"+num+"....
    <ul id="getnownew"></ul>

     

     

    $(document).ready(function(){
         $.ajax({ url: "http://ic.snssdk.com/2/article/v25/stream/?category=news_hot&count=20&min_behot_time=1457659116&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457672153&loc_mode=5&lac=4527&cid=28883&iid=3839760160&device_id=12246291682&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=19&os_version=4.4.4&uuid=352284045861006&openudid=84c1c7b192991cc6",type: "GET",dataType: "jsonp", //指定服务器返回的数据类型
                success: function (data) {
    		    var obj = data.data;
                var num=1;				
    			for(var i in obj) {		
    				var str = "<li>"+num+".  <a  target='_blank' href='"+obj[i].share_url+"'>"+obj[i].title+"</a></li>";
    				$("#getnownew").append(str);
    					num=num+1;
    					if(num==11){return;}
    			}
    	     }
        });
    });

     

    展开全文
  • 今日头条对接新闻

    2018-01-23 10:39:33
    用于对接今日头条发布新闻接口,.net版本(4.5.2) 使用注意:自己要到今日头条的管理中心配置数据 https://open.mp.toutiao.com/#/resource?_k=2o14u3 ,然后网站配置文件配置对接数据(详细看ToutiaoApi下的Config...
  • nodejs抓取今日头条

    2017-10-20 15:06:19
    使用nodejs抓取今日头条接口,并分析数据抓取用户数据
  • 今日头条上面的广告推广数据从飞鱼的CRM系统上面转接到个人/企业的业务系统中去。 将金数据推广上面的广告表单数据推送到个人/企业的业务系统中去 代码都是经过本人测试可以直接使用,本人参考的是java的接口对接...
  • 今日头条广告_API对接文档学习-1

    千次阅读 2020-04-28 21:56:55
    1,概述 激活数,注册数和付费数是APP广告主衡量...本文档主要主要用于满足头条广告主对广告效果的监测需求。... 2,事件的定义 ...(2)应用激活:当用户从头条客户端点击应用广告,并安装应用并首次打开(指的是今日头条...

    1,概述
    激活数,注册数和付费数是APP广告主衡量转化效果的一些重要指标。本文档主要主要用于满足头条广告主对广告效果的监测需求。把从头条广告渠道分发的APP激活数,注册数或者付费数回传给头条广告平台,帮助广告主跟踪广告的转化效果。
    2,事件的定义
    (1)广告点击:头条用户点击广告素材(进入落地页之后的点击不算数)
    (2)应用激活:当用户从头条客户端点击应用广告,并安装应用并首次打开(指的是今日头条的客户端APP)
    (3)应用注册:用户激活之后又完成了注册账号(成为新用户)。
    (4)应用付费:该用户从头条客户端点击应用广告,完成激活注册,并产生付费行为。

    3,关键接口信息
    (1)接口1:帮助广告主接收头条广告服务器提供的广告点击信息
    请求方:头条广告服务器
    处理方:广告主提供的监测平台服务器
    请求协议:HTTP协议
    请求地址:即feedback_url ,广告主在头条投放提供监测URL。监测URL中,使用{参数}或者双下划线_参数_的形式来设置所需返回的数据

    (2)接口2:用于将广告主将激活,注册或者付费上报给头条广告服务器,头条会将激活,注册或者付费与广告计划关联,跟踪每个广告计划的转化效果。对回调了激活 ,注册或付费数据的广告计划,头条支持oCPC(目标转换出价)的竞价方式(也就是竞价排名)。
    注意:广告主必须在收到APP激活,注册或者付费后将实时效果上报头条服务器,以免出现统计无效的情况。

    广告主关键的服务工作:广告主自建服务,将所有的激活,注册和付费数据与头条的点击数据匹配,回调从头条渠道产生的激活,注册和付费数据,同时将回调参数CALLBACK_PARAM回调头条。

    展开全文
  • 项目为仿今日头条,使用了百度ApiStore接口查询数据,使用微信组件/api有 封装请求方法,底部tab,启动页动画,loading,scroll-view,swiper,列表页支持上下拉加载更多 > 效果图: 启动欢迎页,几行代码可实现旋转与缩放:...
  • 今日头条是业界知名的技术牛人大团结的公司,今天我们来探讨一下如何规模化的采集获取今日头条的数据。我就一招:iDataAPI。...今日头条数据接口(API):https://www.idataapi.cn/?rec=baidu_0 ...

    今日头条是业界知名的技术牛人大团结的公司,今天我们来探讨一下如何规模化的采集获取今日头条的数据。我就一招:iDataAPI。

    今日头条数据接口(API):https://www.idataapi.cn/?rec=baidu_0

    展开全文
  • 今日头条移动APP 广告激活数据API对接实践

    万次阅读 热门讨论 2017-08-22 22:09:13
    自从上班实习之后,就好久没有写博客了,这是自毕业后的第一篇博客,...以下主要列举对接今日头条广告激活数据API的流程以及接口的实现。 熟悉流程 我们想看看今日头条对接文档给我们提供的一个对接流程示意图: 由

    自从上班实习之后,就好久没有写博客了,这是自毕业后的第一篇博客,希望自己今后能养成写博客的一个好习惯。最近公司为了加速APP推广,采取在外部平台(如:今日头条)进行广告投放的方式,进行用户引流。因此我们需要对广告的激活数据进行一个检测,跟踪广告的转化效果。以下主要列举对接今日头条广告激活数据API的流程以及接口的实现。

    1. 熟悉流程
      我们想看看今日头条对接文档给我们提供的一个对接流程示意图:
      这里写图片描述
      由上图可看出我们需要提供两个接口
      接口一:当用户点击我们投放在今日头条的广告时,今日头条服务器会向接口一下发数据,我们需要对该部分数据进行保存操作。
      接口二:当用户下载了我们广告中的APP,并且用户成功注册后,APP调用接口二,接口二将对应的数据回调到今日头条平台。

    2. 接口实现
      接口一流程
      这里写图片描述

    接口一的参数形式
    ANDROID:

    http://xxx.xxx.com/xxx?adid=__AID__&cid=__CID__&callback=__CALLBACK_PARAM__&imei=__IMEI__&mac=__MAC__&android_id=__ANDROIDID1__&timestamp=__TS__&ip=__IP__&os=__OS__
    

    IOS:

    http://xxx.xxx.com/xxx?adid=__AID__&cid=__CID__&idfa=__IDFA__&mac=__MAC__&timestamp=__TS__&ip=__IP__&os=__OS__&callback=__CALLBACK_PARAM__
    

    接口一的响应方式
    JSON格式

    接口一响应内容

    • 状态码200
    • {status:0}
    • success(在项目当中我采用的是返回success)

    接口一的代码实现

    • 接口一的参数接收DTO
    /**
     * 接口一和接口二的参数DTO基类
     */
    public class BaseParamsDTO{
        private Integer os;             //客户端类型,0-Android,1-IOS,2-WP,3-Others
        private String idfa;            //IOS唯一标识(IOS9和IOS10当开启了限制广告跟踪时,该值不能作为唯一标识)
        private String imei;            //安卓唯一标识(APP需要授权才能获取到)
        private String androidId;       //安卓唯一标识(恢复出厂设置会改变)
        private String ip;              
    }
    /**
     * 监测接口参数DTO
     */
    public class MonitoringParamsDTO extends BaseParamsDTO{
        private String adid;            //广告计划id,原值
        private String cid;             //广告创意id,原值
        private String mac;             //eth0网卡mac客户
        private String timestamp;       //时间戳
        private String convertId;       //转化跟踪id
        private String callback;        //回调参数
    }
    
    • 接口一保存的实体信息(以下只列举主要的字段,根据自身的业务要求进行字段拓展)
    public class UserDeviceInfo{
        private String adid;            // 广告计划id
        private String cid;             // 广告创意id
        private Integer os;             // 客户端类型,0-Android,1-IOS,2-WP,3-Others
        private String idfa;            // ios唯一标识
        private String imei;            // 安卓唯一标识
        private String androidid;       // 安卓唯一标识
        private String mac;
        private String ip;   
        private String callback;        //回调参数
        private String timestamp;       //时间戳
        private String convertId;       //转化跟踪id
    	//TODO 主键、创建时间、更新时间等字段不一一列举了,可根据业务需要进行拓展字段
     }
    
    • Controller层实现
    //PS:最近有评论让我贴出controller代码,现在我已经很久没接触这个代码了,现在controller代码是现写的,仅供参考,controller只要接收头条返回的参数,业务中再做一些参数校验即可
    @RequestMapping("/monitoring")
    @ResponseBody
    public String saveMonitoringParams(MonitoringParamsDTO  monitoringParamsDTO){
         //TODO 业务中可以做一些参数校验
         
         // 调用sevice方法保存监控参数(即下面的saveUserDeviceInfo方法)
         
         // 处理成功返回success,否则返回其他
         return "success";
    }
    
    • Service层的代码实现:
    /**
     * 保存用户的设备信息
     *
     * @param monitoringDto 头条下发的监测参数
     */
    public void saveUserDeviceInfo(MonitoringParamsDto monitoringDto) {
        //获取监测参数获取用户设备信息
        UserDeviceInfo userDeviceInfo = userDeviceInfoService.getUserDeviceInfoByParams(monitoringDto);
        //不存在用户设备信息,则新建实体
        if (ToolsKit.isEmpty(userDeviceInfo)) {
            userDeviceInfo = new UserDeviceInfo();
        }
        //将头条的下发的检测参数转化为用户设备信息实体
        BeanCopier beanCopier = BeanCopier.create(MonitoringParamsDto.class, UserDeviceInfo.class, false);
        beanCopier.copy(monitoringDto, userDeviceInfo, null);
       //TODO 此处,您可以再做其他业务逻辑,我在项目重要是累计了用户的点击次数等等 
       
       //保存用户设备信息
        userDeviceInfoService.save(userDeviceInfo);
    }
    
     /**
     *根据参数获取设备信息实体
     *匹配逻辑如下:
     *1、IOS系统,idfa合法的情况下,就根据idfa查找设备信息
     *2、IOS系统,idfa不合法的情况下,就根据ip和idfa查找设备信息
     *3、Android系统,imei存在的情况下,就根据ip和imei查找设备信息
     *4、Android系统,imei不存在的情况下,就根据ip和AndroidId查找设备信息
     *5、其他情况就根据ip和ua(User-Agent)查找设备信息
     * @param baseParamsDto
     * @return
     */
    public UserDeviceInfo getUserDeviceInfoByParams(BaseParamsDto baseParamsDto) {
        if (ToolsKit.isEmpty(baseParamsDto)) {
            throw new ServiceException("参数为空!");
        }
        //查找是否已经存在设备信息记录
        int os = baseParamsDto.getOs();
        Map<String, Object> params = Maps.newLinkedHashMap();
        params.put(UserDeviceInfo.OS_FIELD, os);
        params.put(UserDeviceInfo.IP_FIELD, baseParamsDto.getIp());
    
        UserDeviceInfo entity = null;
        String idfa = baseParamsDto.getIdfa();
        String imei = baseParamsDto.getImei();
        //ios系统且idfa不为空
        if (OSTypeEnums.IOS.getValue() == os) {
            params.put(UserDeviceInfo.IDFA_FIELD, idfa);
            if (TooUtil.checkIdfa(idfa)){ //判断idfa是否合法
                params.put(UserDeviceInfo.IP_FIELD,null);
            }
            entity = this.findEntityByParams(params);
        } else if (OSTypeEnums.ANDROID.getValue() == os) {
            //Android系统且imei不为空
            if(ToolsKit.isNotEmpty(imei)){
    	       params.put(UserDeviceInfo.IMEI_FIELD, imei);
            }else{
    	       params.put(UserDeviceInfo.ANDROID_ID_FIELD, baseParamsDto.getAndroidId());
            }
            entity = this.findEntityByParams(params);
        } else {
            //通过ip和ua查找
            params.put(UserDeviceInfo.UA_FIELD, baseParamsDto.getUa());
            entity = this.findEntityByParams(params);
        }
        return entity;
    }
    

    接口二流程
    这里写图片描述
    接口二的代码实现

    • 接口二回调的url
    http://ad.toutiao.com/track/activate/?callback={callback_param}&muid=
    {muid}&os={os}&source={source}&conv_time={conv_time}&signature={signa
    ture}
    
    • 接口二的参数接收DTO
    /**
     * 回调激活参数DTO
     */
    public class CallBackActiveParamsDTO extends BaseParamsDTO{
        //根据自己的业务需要定义回调激活参数,此处我主要收集用户的id
        private String userid;
    }
    
    • Controller层实现
    //PS:最近有评论让我贴出controller代码,现在我已经很久没接触这个代码了,
    //现在controller代码是现写的,仅供参考,controller只要接收我们自己的app客户端传过来的参数,做下参数校验,
    //然后再调用service方法即可
    @RequestMapping("/callback")
    @ResponseBody
    public String callback(CallBackActiveParamsDTO callBackActiveParamsDTO ,Sting source){
         //TODO 业务中可以做一些参数校验
         
         // 调用sevice方法中的激活回调方法(即下面的callback方法)
         
         // TODO 处理成功返回success,具体返回什么看自己的业务
         // 这个接口时给我们自己的app客户端调用的,所以返回参数可以自定
         return "success";
    }
    
    • Service层的代码实现:
        /**
         * 激活回调
         *
         * @param dto 回调激活参数信息
         * @param source 激活来源,如:login
         */
        public void callback(CallBackActiveParamsDTO dto,String source) {
            //获取监测参数获取用户设备信息
            UserDeviceInfo userDeviceInfo = userDeviceInfoService.getUserDeviceInfoByParams(monitoringDto);
            
            //如果为空,则表明无该实体对象,不需要回调头条服务器
            if (ToolsKit.isEmpty(userDeviceInfo)) {
                return;
            }
           
            int os = userDeviceInfo.getOs();
            String muid = null; //安卓取imei进行MD5加密,ios取idfa
            if (OSTypeEnums.ANDROID.getValue() == os) {
                //muid赋值
                String imei = userDeviceInfo.getImei();
                muid = DuangKit.Secure.md5(imei);
            } else if (OSTypeEnums.IOS.getValue() == os) {
                muid = userDeviceInfo.getIdfa();
            }
            
            //回调url设置,回调参数, Constant.TOU_TIAO_ACTIVATE_URL就是头条接口二的url
            // Constant.TOU_TIAO_ACTIVATE_URL = http://ad.toutiao.com/track/activate/?callback=%s&muid=%s&os=%s&source=%s&conv_time=%s
            String url = String.format(Constant.TOU_TIAO_ACTIVATE_URL, userDeviceInfo.getCallback(), muid, os,source, userDeviceInfo.getTs());
            
            //对url进行签名
            url = getSignatureUrl(url, os);
            call2TouTiao(url, userDeviceInfo);
        }
    
        /**
         * 启动子线程回调今日头条接口
         *
         * @param url            回调地址
         * @param userDeviceInfo 用户设备信息
         */
        private void call2TouTiao(final String url, final UserDeviceInfo userDeviceInfo) {
            ThreadPoolKit.execute(new Thread() {
                public void run() {
                    //发起回调,此处我使用的是公司内部对HttpClient封装的工具类发起回调
                    HttpRes httpRes = HttpKit.duang().url(url).get();
                    String result = httpRes.getResult();
                    if (ToolsKit.isNotEmpty(result)) {
                        Map map = ToolsKit.jsonParseObject(result, Map.class);
                        if (ToolsKit.isNotEmpty(map) && map.get("ret") == 0) {
                            //TODO 回调成功,此处可以根据自己的业务做处理,此处我主要是保存了回调次数
                  
                        }
                    }
                }
            });
        }
    
        /**
         * 获取签名的url
         *
         * @param url 需要签名的url
         * @param os  系统类型
         * @return
         */
        private String getSignatureUrl(String url, int os) {
            String key = null;
            if (os == OSTypeEnums.ANDROID.getValue()) {
                key = Constant.TOUTIAO_ANDROID_KEY;
            } else if (os == OSTypeEnums.IOS.getValue()) {
                key = Constant.TOUTIAO_IOS_KEY;
            } else {
                throw new ServiceException("无法处理os类型,os = " + os + " : " + OSTypeEnums.getMap().get(os));
            }
            //使用HMAC-SHA1签名方法对url进行签名
            String signature = TooUtil.getHmacSHA1(url, key);
            //对signature进行base64加密
            signature = Base64.encode(signature);
            url = url + "&signature=" + signature;
            return url;
        }
    
    • 涉及的主要工具类方法:
        /**
         * HMAC-SHA1签名
         *
         * @param message
         * @param key
         * @return
         */
        public static String getHmacSHA1(String message, String key) {
            String hmacSha1 = null;
            try {
                // url encode
                message = URLEncoder.encode(message, "UTF-8");
                // hmac-sha1加密
                Mac mac = Mac.getInstance("HmacSHA1");
                SecretKeySpec spec = new SecretKeySpec(key.getBytes(), "HmacSHA1");
                mac.init(spec);
                byte[] byteHMAC = mac.doFinal(message.getBytes());
                // base64 encode
                hmacSha1 = new BASE64Encoder().encode(byteHMAC);
            } catch (Exception e) {
                throw new ServiceException(e.getMessage());
            }
            return hmacSha1;
        }
    
        private static final String IOS10_INVALID_IDFA = "00000000-0000-0000-0000-000000000000";
        private static final String IOS9_INVALID_IDFA = "00000000000000000000000000000000";
        /**
         * 判断idfa是否合法
         *
         * @param idfa
         * @return
         */
        public static boolean checkIdfa(String idfa) {
            if (ToolsKit.isEmpty(idfa) || IOS9_INVALID_IDFA.equals(idfa) || IOS10_INVALID_IDFA.equals(idfa)) {
                return false;
            }
            return true;
        }
    }
    

    小结
    基本都在贴代码,少部分涉及主要业务逻辑的代码我省略了,但是只要跟着我这个流程走下来把今日头条的接口接起来肯定没问题。其实最重要的是是匹配用户的设备信息,因为现在IOS9和IOS10有可能获取到没用的idfa(都是000000这种形式的idfa),Android在获取imei的时候需要用户授权。今日头条那边的技术人员建议在获取不到idfa或者imei的情况下使用ip和ua匹配,但是经验证多次接口一获取不到ua参数,且到目前为止IOS获取ua今日头条还在开发阶段。用户设备信息的匹配的方法还需要更加完善,有更好的匹配方法也可以相互参考,谢谢。

    展开全文
  • 今日头条 巨量引擎 marketing api

    千次阅读 热门讨论 2020-08-12 16:08:20
    今日头条 巨量引擎 marketing api 有正在对接这个接口文档的开发者么?留个名创个群讨论一下
  • C# WebApi 获取今日头条新闻代码

    千次阅读 2017-06-22 11:06:50
    注意:当前方法通过【聚合数据】中的今日头条API实现。 var key ="聚合数据获取到的KEY"; var typeCode ="聚合数据中的新闻分类,例如:top代表头条,tiyu代表体育,yule代表娱乐等。"; string url = string....
  • 提供封装好的网页端今日头条数据采集接口,接口稳定。 接口使用详情请参考接口文档。 已支持接口列表如下: 自媒体用户发布列表 自媒体用户关注/粉丝数 关键词搜索 指定频道feed流 评论列表 接口持续更新维护~
  • 基于今日头条、UC头条、企鹅号文章等(后续会继续增加接入平台)提供的文章,通过web服务接口,采集临时存储至服务器,服务器对数据进行分类、筛选后进行分发,目前只提供主要接口请求,主动推送功能未实现。...
  • 今日头条接口

    万次阅读 2018-01-19 09:48:56
    http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1504621638&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1504622133&loc_mode=5&loc_time=1504564532&latitude=35.00125&longitude=113.56358166666665&city=%E7%84%A6%E4%BD%9C&lac=34197&cid=23201&iid=14534335953&device_id=38818211465&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SM-E7000&os_api=19&os_version=4.4.2&uuid=357698010742401&openudid=74f06d2f9d8c9664...一共是四种样式的条目: 判断has_video不为null,并且为true....视频的条目,获取...large_image_list(非空判断)中的第一张图片显示 否则,判断has_image不为null,并且为true,,,获取image_list(非空)......
  • 今日头条DMP平台API介绍.pdf
  • 作为最火的新闻app,今日头条有这很大的活跃用户群和日访问量。大流量决定了今日头条会位商品做广告。 1.如下为今日头条的广告收费方案(来自官方开发文档): 激活数是 APP 广告主衡量转化效果的重要指标之一,为...
  • 后续会结合互联网具体的业务了解互联网的工作内容、用到的技术栈,主要会讲今日头条的。建议最好先体验下“今日头条”这个APP和头条号这个后台。头条号是给作者发文章用的,跟微信公众号后台类似。如果你入职了头条...
  • 今日头条_signature参数 2021-03-19版本 开发接口:http://182.92.177.211:14565/getsignature 方法:post 参数:url:需要加密的头条url,例如...
  • 头条(以下简称头条)广告主 对广告效果的监测需求,本文档介绍如何把从 头条广告渠道分发的 APP 激活数、注册数或付费数回传给头条广告平台,帮助广 告主跟踪转化效果。对于回调了激活、注册或付费数据的广告计划...
  • 仿今日头条

    2018-12-03 11:00:47
    基本遵循 Material Design 设计风格 抓包获取今日头条API 使用 Google 官方 MVP 架构 DrawerLayout + NavigationView + SwipRefresh BottomNavigationView 搭配使用 RxBus 代替 EventBus 进行组件之间通讯 ViewPager...
  • private static String api_path ="/crm/v2/openapi/pull-clues/"; //秘钥 private static String SECRETKEY = ""; //token private static String TOKEN = ""; //Base64 final Base64.Encoder encoder = Base64....
  • 因为也是纯粹的写写前端页面,所以数据方面用的是mock.js,为了真实的模拟请求,可以直接在 Easy Mock 自己生成API 也可直接登陆我这项目的Easy Mock账号密码: 账号: vue-toutiao 密码: 123456 如果你想修改接口,...
  • 抓包获取今日头条API 使用 Google 官方 MVP 架构 DrawerLayout + NavigationView + BottomNavigationView 搭配使用 RxBus 代替 EventBus 进行组件之间通讯 ViewPager 搭配 Fragment 懒加载 SwipeRefreshLayout 搭配 ...
  • 4.运行api_test.py开始测试使用 {'error_code': -1, 'msg': '...
  • 用我的三脚猫python和懵逼的web开经验,做了一个每天自动发送今日头条微头条的小公举。 下面就分享给大家现个丑。 当然先从登录开始,我仅做了一个cookie的登录,打开今日头条登录后,F12-------network 找到user_...
  • 仿今日头条小程序实现导航栏滑动,底部标签栏,窗口二级内容显示。
  • 这篇文章是在掘金上看到的,感觉不错。怕时间长了不好找,因此就转载过来,进行保存。...上上个星期 Blankj 老师发表了一篇力挺今日头条屏幕适配方案的 文章,提出了很多优化的方案,并开源了相关源码 上个星期 拉丁.
  • 前言 由于工作原因,需要用到今日头条的Marketing API做一些广告投放的定制化开发。然后看现在网上也没多少关于头条Marketing API的文章,于是便就有了...
  • Android 今日头条屏幕适配详细使用攻略

    千次阅读 多人点赞 2020-09-22 09:33:40
    首先感谢大神JessYan的创神之作《AndroidAutoSize》,大神以今日头条屏幕适配的核心代码为基础进行了扩展封装,产生了《AndroidAutoSize》这个能快速接入使用的屏幕适配方案,这个屏幕适配方案是我遇到的截止2020.9....
  • hello,小伙伴们大家好,今天给大家介绍的开源项目是:TTBot,这个开源项目是使用今日头条web版API实现的头条机器人,涵盖账密登陆、滑动验证、关注与粉丝操作、头条号内容操作, 转发评论等。支持定时器任务,实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,814
精华内容 2,325
关键字:

今日头条api