java app store connect 账号数据获取

package com.xj.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class AppleStoreGrab {

    public static String login_url = "https://appstoreconnect.apple.com/login";
    
    public static String login_user = "https://idmsa.apple.com/appleauth/auth/federate?isRememberMeEnabled=true";
    
    public static String login_pass = "https://idmsa.apple.com/appleauth/auth/signin";
    
    public static String times = "https://reportingitc2.apple.com/gsf/salesTrendsApp/businessareas/InternetServices/subjectareas/iTunes/vcubes/778/timeseries/";
    
    public static String rmb = "https://reportingitc2.apple.com/gsf/salesTrendsApp/businessareas/InternetServices/subjectareas/iTunes/vcubes/700/timeseries/";
    
    public static String accountName = "xxxx";//账号
    public static String password = "xxxxx";//密码

    /**
     * 模拟登录
     */
    public static Map<String,String> login(){
        try{
                Map<String, String> headerMap = new HashMap<String, String>();
                String accept = "application/json, text/javascript, */*; q=0.01";
                String accept_encoding = "gzip, deflate, br";
                String accept_language = "zh-CN,zh;q=0.9";
                String user_agent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36";
                String conection = "keep-alive";
                String origin = "https://idmsa.apple.com";
                String pragma = "no-cache";
                String referer = "https://idmsa.apple.com/appleauth/auth/signin?widgetKey=e0b80c3bf78523bfe80974d320935bfa30add02e1bff88ec2166c6bd5a706c42&font=sf";
        
                headerMap.put("Accept", accept);
                headerMap.put("Accept-Encoding", accept_encoding);
                headerMap.put("Accept-Language", accept_language);
                headerMap.put("Content-Type", "application/json");
                headerMap.put("Connection", conection);
                headerMap.put("Host", "idmsa.apple.com");
                headerMap.put("origin", origin);
                headerMap.put("pragma", pragma);
                headerMap.put("Referer", referer);
                headerMap.put("User-Agent", user_agent);
                headerMap.put("X-Apple-Domain-Id", "3");
                headerMap.put("X-Apple-Widget-Key", "e0b80c3bf78523bfe80974d320935bfa30add02e1bff88ec2166c6bd5a706c42");
                headerMap.put("X-Requested-With", "XMLHttpRequest");
                
                JSONObject queryJson = new JSONObject();
                queryJson.put("accountName", accountName);
                queryJson.put("password", password);
                queryJson.put("rememberMe", true);
                
                Connection installsCon = Jsoup.connect(login_pass);
                //installsCon.timeout(60000);
                installsCon.ignoreContentType(true);
                installsCon.headers(headerMap);
                installsCon.method(Method.POST);
                //installsCon.cookies(cooke);
                installsCon.requestBody(queryJson.toString()); 
                //installsCon.data(arg0);
                
                Response installsReqponse = installsCon.execute();
                //System.out.println(installsReqponse.body());
                return installsReqponse.cookies();
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 设置账号id
     */
    public static Map<String,String> setSessison(Map<String,String> cookie, String providerid){
        BufferedReader in = null;
        try{
            Map<String, String> headerMap = new HashMap<String, String>();
            headerMap.put("Accept", "*/*");
            headerMap.put("Accept-Encoding", "gzip, deflate, br");
            headerMap.put("Accept-Language", "zh-CN,zh;q=0.9");
            headerMap.put("Cache-Control", "no-cache");
            headerMap.put("Content-Type", "application/json");
            headerMap.put("Connection", "keep-alive");
            headerMap.put("Host", "reportingitc2.apple.com");
            headerMap.put("Pragma", "no-cache");
            headerMap.put("Referer", "https://reportingitc2.apple.com/insights.html");
            headerMap.put("Upgrade-Insecure-Requests", "1");
            headerMap.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
            
            JSONObject queryJson = new JSONObject();
            queryJson.put("provider", "{\"providerId\": \""+providerid+"\"}");
            
            Connection installsCon = Jsoup.connect("https://appstoreconnect.apple.com/olympus/v1/session");
            installsCon.headers(headerMap);
            installsCon.method(Method.POST);
            installsCon.cookies(cookie);
            installsCon.requestBody(queryJson.toString());
            Response installsReqponse = installsCon.execute();
            
            //System.out.println("Session状态:"+installsReqponse.statusCode());
            //System.out.println(installsReqponse.cookies());
            //System.out.println(installsReqponse.body());
            return installsReqponse.cookies();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                if(in != null){
                    in.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }
    /**
     * 获取数据
     */
    public static String getTimeOrRmb(Map<String,String> cooke,String date, int type, String keys){
        
        BufferedReader in = null;
        try{
            Map<String, String> headerMap = new HashMap<String, String>();
            //String accept = "application/json, text/javascript, */*; q=0.01";
            String accept = "application/json, text/plain, */*";
            String accept_encoding = "gzip, deflate, br";
            String accept_language = "zh-CN,zh;q=0.9";
            String user_agent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36";
            String conection = "keep-alive";
            String origin = "https://reportingitc2.apple.com";
            String referer = "https://reportingitc2.apple.com/sales.html?measure=total_tax_usd_utc&startDate="+date+"&endDate="+date+"&group=piano_location&filter_piano_location=143563,143481,143562,143568,143516,143564,143559,143576,143525,143578,143580,143584,143582,143585,143573,143605,143498,143493,143529,143497,143588,143531,143589,143532,143533,143590,143593,143594,143472,143534,143561,143600,143535,143599,143479,143598,143602,143572,143536,143537,143524,143571,143491,143467,143528,143581,143505,143538,143540,143541,143539,143513,143485,143503,143542,143556,143555,143508,143545,143509,143501,143495,143546,143553,143510,143544,143547,143507,143468,143512,143506,143548,143549,143550,143554,143552,143551,143504,143502,143514,143511,143543,143483,143455,143441,143575,143449,143518,143445,143565,143526,143446,143558,143478,143458,143443,143469,143442,143447,143452,143489,143494,143519,143520,143451,143487,143521,143530,143523,143457,143453,143456,143459,143557,143496,143499,143480,143492,143454,143448,143482,143450,143444,143460,143515,143597,143477,143577,143474,143583,143517,143466,143586,143579,143587,143473,143592,143591,143484,143595,143462,143486,143601,143603,143470,143475,143604,143560,143566,143463,143464,143461,143476,143471,143465&filter_transaction_type=101,1003&group_piano_location="+System.currentTimeMillis();
            //String referer = "https://analytics.itunes.apple.com/";
            
            headerMap.put("Accept", accept);
            headerMap.put("Accept-Encoding", accept_encoding);
            headerMap.put("Accept-Language", accept_language);
            headerMap.put("Content-Type", "application/json");
            headerMap.put("Connection", conection);
            headerMap.put("Host", "reportingitc2.apple.com");
            headerMap.put("Origin", origin);
            headerMap.put("Referer", referer);
            headerMap.put("User-Agent", user_agent);
            headerMap.put("X-Requested-With", "XMLHttpRequest, gsf");
            
            JSONObject queryJson = new JSONObject();
            
            
            JSONArray filters = new JSONArray();
            
            /*JSONObject filters3 = new JSONObject();
            filters3.put("dimensionKey", "gross_adam_id_piano");
            filters3.put("optionKeys", "[\"1443689976\"]");
            filters.add(filters3.toString());*/
            
            JSONObject filters1 = new JSONObject();

            //这个为国家编号
            String filter_piano_location = "143563,143481,143562,143568,143516,143564,143559,143576,143525,143578,143580,143584,143582,143585,143573,143605,143498,143493,143529,143497,143588,143531,143589,143532,143533,143590,143593,143594,143472,143534,143561,143600,143535,143599,143479,143598,143602,143572,143536,143537,143524,143571,143491,143467,143528,143581,143505,143538,143540,143541,143539,143513,143485,143503,143542,143556,143555,143508,143545,143509,143501,143495,143546,143553,143510,143544,143547,143507,143468,143512,143506,143548,143549,143550,143554,143552,143551,143504,143502,143514,143511,143543,143483,143455,143441,143575,143449,143518,143445,143565,143526,143446,143558,143478,143458,143443,143469,143442,143447,143452,143489,143494,143519,143520,143451,143487,143521,143530,143523,143457,143453,143456,143459,143557,143496,143499,143480,143492,143454,143448,143482,143450,143444,143460,143515,143597,143477,143577,143474,143583,143517,143466,143586,143579,143587,143473,143592,143591,143484,143595,143462,143486,143601,143603,143470,143475,143604,143560,143566,143463,143464,143461,143476,143471,143465";
            filters1.put("dimensionKey", "piano_location");
            String [] countrys = filter_piano_location.split(",");
            StringBuilder sb = new StringBuilder();
            for(String country: countrys){
                sb.append("\""+country+"\",");
            }
            sb = sb.deleteCharAt(sb.length() - 1);
            filters1.put("optionKeys", "["+sb.toString()+"]");
            filters.add(filters1.toString());
            
            JSONObject filters2 = new JSONObject();
            filters2.put("dimensionKey", "transaction_type");
            filters2.put("optionKeys", "[\"101\", \"1003\"]");
            filters.add(filters2.toString());
            
            
                    
            queryJson.put("filters", filters.toString());
            //queryJson.put("group", "[\"piano_location\"]"); //以国家分组
            queryJson.put("group", "[\"content\",\"piano_location\"]"); //以国家分组
            
            queryJson.put("interval", "{\"key\": \"day\", \"startDate\": \""+date+"T00:00:00.000Z\", \"endDate\": \""+date+"T00:00:00.000Z\"}");
            queryJson.put("limit", 200); 
            if(type == 1){
                queryJson.put("cubeApiType", "RANK");
                queryJson.put("measures", "[{\"key\": \"units_utc\"}]");//销售量
                times = "https://reportingitc2.apple.com/gsf/salesTrendsApp/businessareas/InternetServices/subjectareas/iTunes/vcubes/"+keys+"/rank/";
            }else{
                queryJson.put("cubeApiType", "TIMESERIES");
                queryJson.put("measures", "[{key: \"Royalty_utc\"}]");//收入
                times = "https://reportingitc2.apple.com/gsf/salesTrendsApp/businessareas/InternetServices/subjectareas/iTunes/vcubes/"+keys+"/timeseries/";
            }
            queryJson.put("optionalParams", "{\"pageId\": [\"snt_"+System.currentTimeMillis()+"-54717.70000000015\"]}");
            queryJson.put("order", "[]"); 
            queryJson.put("sorting", "DESC");
            
            //System.out.println(queryJson.toString());
            
            Connection installsCon = Jsoup.connect(times);
            installsCon.timeout(60000);
            installsCon.ignoreContentType(true);
            installsCon.headers(headerMap);
            installsCon.method(Method.POST);
            installsCon.cookies(cooke);
            installsCon.requestBody(queryJson.toString()); 
            
            Response installsReqponse = installsCon.execute();
            //System.out.println("请求状态:"+installsReqponse.statusCode());
            
            return installsReqponse.body();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(in != null){
                try {
                    in.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return "";
    }
    
    public static void main(String [] args){
        Map<String,String> cookes = login();
        System.out.println("获取3:"+cookes);
        System.out.println();
        Map<String,Internal_purchase_income> map = new HashMap<String,Internal_purchase_income>();
        
        /*
        * 117795231  --> 该数据需要登录进去在页面源码去找 ,对应还有个 700 之类的编号,
        */
        cookes.putAll(setSessison(cookes,"117795231"));//117795231    700   119364788  778
        String rank = getTimeOrRmb(cookes,"2019-03-20", 1, "700");
        String timeseries = getTimeOrRmb(cookes,"2019-03-20", 2, "700");
        System.out.println(rank);
        System.out.println(timeseries);
                
        
    }
    

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值