using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.AspNetCore.Mvc.Filters; using System; using System.Collections.Generic; using System.Linq; using System.Text; using dodohold.core; using Dataoke; using System.Text.RegularExpressions; using Org.BouncyCastle.Ocsp; using System.Diagnostics; using TencentCloud.Fmu.V20191213.Models; using Microsoft.VisualBasic; using System.Text.Json; using static System.Runtime.InteropServices.JavaScript.JSType; using System.Security.Cryptography; using System.Security.Policy; using Google.Protobuf.WellKnownTypes; using Microsoft.AspNetCore.Components; using Org.BouncyCastle.Pqc.Crypto.Ntru; using Newtonsoft.Json; using Sayaka.Common; using System.Net; namespace molilian.core { public partial class JdUnionPlus { public async Task GetPromotionBySiteAsync(JdDataDTO result, string shortLinkurl, string clickId, CancellationToken cancellationToken = default) { if (string.IsNullOrEmpty(_account.site_id)) { return await GetPromotionByAffAsync(result, shortLinkurl, clickId, cancellationToken); } string method = "jd.union.open.promotion.common.get"; string version = "1.0"; var data = new { promotionCodeReq = new { siteId = _account.site_id, materialId = shortLinkurl, command = 1, chainType = 2, } }; var body = await RequestAsync(method, version, data.Convert2Json(), cancellationToken); var root = body.Convert2Object(); if (root != null && root.jd_union_open_promotion_common_get_responce != null) { var _promotion_data = root.jd_union_open_promotion_common_get_responce.getResult; var promotion_data = _promotion_data.Convert2Object(); string code = root.jd_union_open_promotion_common_get_responce.code; if ("0".Equals(code)) { if (promotion_data.code == 200) { var url = promotion_data.data.clickURL; result.success = true; result.message = "OK"; result.shortLinkurl = url; result.content = result.shortLinkurl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); return result; } } result.reason = root.jd_union_open_promotion_common_get_responce.message; if (string.IsNullOrEmpty(result.reason)) result.reason = promotion_data.message; } else { result.reason = "网络错误"; } result.success = false; result.message = "转链失败"; result.shortLinkurl = shortLinkurl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); _ = new LoggerLibrary("JdUnion", "promotion_get_error").Info(body).SaveAsync(); return result; } public async Task GetPromotionByAffAsync(JdDataDTO result, string shortLinkurl, string clickId, CancellationToken cancellationToken = default) { string method = "jd.union.open.promotion.bysubunionid.get"; string version = "1.0"; var data = new { promotionCodeReq = new { materialId = shortLinkurl, command = 1, chainType = 2, } }; var body = await RequestAsync(method, version, data.Convert2Json(), cancellationToken); var root = body.Convert2Object(); //{"jd_union_open_promotion_bysubunionid_get_responce":{"code":"0","getResult":"{\"code\":200,\"data\":{\"shortURL\":\"https://u.jd.com/esCrWn4\"},\"message\":\"success\",\"requestId\":\"o_0b64a07b_lyiusnpg_74220789\"}"}} if (root != null && root.jd_union_open_promotion_bysubunionid_get_responce != null) { string code = root.jd_union_open_promotion_bysubunionid_get_responce.code; var _promotion_data = root.jd_union_open_promotion_bysubunionid_get_responce.getResult; var promotion_data = _promotion_data.Convert2Object(); if ("0".Equals(code)) { if (promotion_data.code == 200) { var url = promotion_data.data.shortURL; result.success = true; result.message = "OK"; result.shortLinkurl = url; result.content = result.shortLinkurl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); return result; } } result.reason = root.jd_union_open_promotion_bysubunionid_get_responce.message; if (string.IsNullOrEmpty(result.reason)) result.reason = promotion_data.message; } else { result.reason = "网络错误"; } result.success = false; result.message = "转链失败"; result.shortLinkurl = shortLinkurl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); _ = new LoggerLibrary("JdUnion", "bysubunionid_get_error").Info(body).SaveAsync(); return result; } public async Task GetPromotionByCrawlerAsync(JdDataDTO result, string wareUrl, string clickId, CancellationToken cancellationToken = default) { string[] parts = wareUrl.Split(new string[] { ".html" }, StringSplitOptions.None); if (parts.Length > 1) { wareUrl = parts[0] + ".html"; } var ts = DateTime.Now.Convert2UnixTimestamp(true); string cookies = _account.cookies; //cookies = "pinId=lDSKR4P756s; __jdu=797222838; unpl=JF8EAM1nNSttXxtVVxtSSEFASw9QWwpbTh4KP28NAwlaTAvEt16MoRnbUfHBdCarU9683KT3AsB67n92UtFSEXtdVV9fD0oeBm5vNWRdXU8ABh5VSUAXJV06KgF6SUxXbxN6CCU2S1UEGgYfExlOX11bEAl7FANfZjVSVV5IVwYSABIiEXtdXFptCEoWAmtjBF1YWkJRNSsHGxMRTltWX1oBexYzbWYEUV1fQ10AGjJZfMnF8oHV_d_CidTxw9Df9oz_3EgdCh0RE0hUVldtCXsU; shshshfpa=02d19590-d1e4-c91f-76d9-50b5b48caeae-1696955111; shshshfpx=02d19590-d1e4-c91f-76d9-50b5b48caeae-1696955111; TrackID=1P1YIoOSuMvq9KVQS8e4qaKAWslU3bHIlXwpUNeXUOPY_dPOhYcH5fl6XgaIzKppd5zTuGg52Ql9Ht7h1LNA62ZkhO1G3xwkTKekmP3nhjjmnOr5rzvlohhH3EkChqHLB; thor=D3FCA70DCE7542F87C212B790D3JDaxNfPy83okP3kLScwCkGiuMcyC4Pcyn8202E9E708F27CB58F480D2CC3FE67C9253747FE21007250E37AE528C577139FEEC81E6EE68034351A54BE200FF3JDaxNfPy83okP3kLScwCkGiuMcyC4Pcyn7n92UtFE03B1646F11A6B796AEE7DE71C760EDFF210BD03D24599A6CFF007C0D40BA49D; pin=23117; unick=jd2311kga; _tp=D8kjVbHzTJzgqxcxaN3m1w%3D%3D; _pst=23117; ipLoc-djd=24-2144-3909-58335; 3AB9D23F7A4B3C9B=IPF6PUOISQRNPNXNQVLJJVKQVBTAvEt16MoRnbUfHBdCarU9683JDaxNfPy83okP3kLScwCkGiuMcyC4PcynYGLMEE; flash=2_YNg0msef1iArLpGWQBwhJos62BkQWLuFuDD-HGOLK2KKuPtQ08qYx9js2jlEHwoRT7AVTOjRo8iR1-PT6ZsT8ZDnqdgMfbeoSNMJvJa8qphobenATQ0WXPYP62_XgiF1J7II6jY1qovmiIDadA7rd5tHyAVpTzEsqpI6xVJ9b6D*; __jda=209449046.797222838.1720272224.1720293360.1721239059.3; __jdc=209449046; __jdv=209449046|baidu|-|organic|notset|1721239059356; 3AB9D23F7A4B3CSS=jdd03IPF6PUOISQRNPNXNQVLJJVKQVBTAvEt16MoRnbUfHBdCarU9683JDaxNfPy83okP3kLScwCkGiuMcyC4PcynvEt16MoRnbUfHBdCarU9683KT3AsB67n92UtFUX; _gia_d=1; shshshfpb=BApXcdm_fwvVAJzuAI6Mnq8QQOcIPSh90B9TUVj599xJ1MlKCa4O2; __jdb=209449046.5.797222838|3.1721239059; RT=\"z=1&dm=jd.com&si=zpw2ttxi9&ss=lyq5alej&sl=6&tt=3x4&ld=z4s&nu=3d2f85352c70c73af100bf1449967844&cl=x78\"\r\n\r\n;"; string uuid = cookies.GetContentPart("__jdu=", ";"); string __jda = cookies.GetContentPart("__jda=", ";"); if (__jda.Split('.').Length > 1) { uuid = __jda.Split('.')[1]; } string useragent = _account.user_agent; if (string.IsNullOrEmpty(useragent)) useragent = ProviderFakeUserAgent.RandomComputer; var args = new { funName = "getCode", param = new { couponLink = "", isPinGou = 0, materialId = result.itemId, materialType = 1, planId = 3479956501, promotionType = 15, receiveType = "cps", wareUrl = wareUrl, isSmartGraphics = 0, command = 1, ext1 = "618|pc|".UrlEncode() }, lientPageId = "jingfen_pc" }; string data = args.Convert2Json().UrlEncode(); string qs = await H5stHack(new { functionId = "unionPromoteLinkService", appid = "unionpc", _ = $"{ts}", loginType = "3", uuid = uuid, body = data, }, cancellationToken); string url = $"https://api.m.jd.com/api?{qs}"; if (string.IsNullOrEmpty(qs)) { result.success = false; result.message = "转链失败"; result.reason = "签名失败"; result.shortLinkurl = wareUrl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); return result; } WebClientUtility client = new WebClientUtility(); client.Proxy = _proxy; #if DEBUG client.Proxy = null; #endif client.SetContentType("application/x-www-form-urlencoded"); client.AddHeaders("X-Referer-Page", "https://union.jd.com/proManager/index"); client.AddHeaders("X-Rp-Client", "h5_1.0.0"); client.AddHeaders("Referer", "https://union.jd.com/"); client.AddHeaders("Origin", "https://union.jd.com"); client.UserAgent = useragent; client.AddHeaders("Cookie", cookies); client.Post($"body={data}"); var response = await client.RequestAsync(url, "GET", cancellationToken); https://api.m.jd.com/api?functionId=unionPromoteLinkService&appid=unionpc&_=1734447407687&loginType=3&uuid=1734444378650448359604&x-api-eid-token=jdd03YJZYUINYGLWQKYT2SFR5PF5CNZ5PK5SQB3SOWOR5DHKS62647SPYBXWBMLYF7YEFH7RDZG22SM77HWYSFKYKTZJICUAAAAMT2TYOUQQAAAAADOZREVGL2Z3VVEX&h5st=20241217225647690;ff8lvy5fkzklklr1;586ae;tk03wb3c71ba318nQZgEdIpw3aqKhQNr_DOL4ffKT_bx3botkXGLthFRyT-TL0p502UEdMny0L0mZSLWUXs6264cdk-I;45b11a32199c9d0e995efe3339eff00f;4.9;1734447407690;pjbMhjZf561R-_FNASVeySkQzTFSJrJdJrESJrpjh7Je6rJdJz1TIipjLDrgJf4f5n1e7XldHe4e6TIS1f1f7rITHeof0b1TFeVf6nVSJrJdJrEa-OFTGOEjLrJp-jpe7PYSHKYeIWlf1roeJaleJq4e2XYd3fVS5X1ezHIS4jpjxj5PKSEQKeFjLrJp-j5e9HIg3T0UG6VRFuWeDipjxjJOJrpjh7JjSOUbA_nOyroNneWbJrJdJ31QHyVT5ipjLDrgJj4f9G1WJrJdJTlPJrpjh7ZMLrJp7rJdJLYOJipjLrpjh7JjJrJdJPYOJipjLrpjh7Je6rJdJTYOJipjLrpjh7pfLDIj2XETJrpjLrJp-rojxjpe2iFjLrpjLDrgzjYfLDIj4XETJrpjLrJp-jYgLDIj5XETJrpjLrJp-jZe9nIg7jpjxjZf2iFjLrpjLDrg7rJdJ-1OJrpjLrJp-Xojxj5P-ipjLrpjh7pfLDIj-ipjLrpjh7pfLDIjHOEjLrpjLD7NLDIjHyVS3KUSJrpjh7ZMLrJpJrUO3ekQJrJdJjoPJrpjLrJpwqJdJrkPJrpjh7Jj3ToNL-oe1zVRUq5d7zpf6rpWdq5P0ulS9G1WJrJdJnVO4ipjLD7N;76beaa50fd5fe694a2824d4dbde781c0 //if (response.ResponseMessage.StatusCode == HttpStatusCode.Forbidden) //{ // result.success = false; // result.message = "转链失败"; // result.reason = "nologin"; // result.shortLinkurl = wareUrl; // result.deeplink_url = GetDeeplink(result.shortLinkurl); // return result; //} string body = response.Body(); var root = body.Convert2JsonElement(); int code = root.Read("code"); string message = root.Read("message"); string shortCode = root.PathRead("data.shortCode"); if (code == 200) { result.success = true; result.message = "OK"; result.shortLinkurl = shortCode; result.content = result.shortLinkurl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); } else { if (string.IsNullOrEmpty(body)) message = "网络异常"; result.success = false; result.message = "转链失败"; result.reason = message; result.shortLinkurl = wareUrl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); _ = new LoggerLibrary("JdUnion", "GetPromotionByCrawlerAsync").Info(body).SaveAsync(); } return result; } public async Task GetPromotionByCrawlerAsync2(JdDataDTO result, string wareUrl, string clickId, CancellationToken cancellationToken = default) { string[] parts = wareUrl.Split(new string[] { ".html" }, StringSplitOptions.None); if (parts.Length > 1) { wareUrl = parts[0] + ".html"; } var ts = DateTime.Now.Convert2UnixTimestamp(true); string cookies = _account.cookies; //cookies = "pinId=lDSKR4P756s; __jdu=797222838; unpl=JF8EAM1nNSttXxtVVxtSSEFASw9QWwpbTh4KP28NAwlaTAvEt16MoRnbUfHBdCarU9683KT3AsB67n92UtFSEXtdVV9fD0oeBm5vNWRdXU8ABh5VSUAXJV06KgF6SUxXbxN6CCU2S1UEGgYfExlOX11bEAl7FANfZjVSVV5IVwYSABIiEXtdXFptCEoWAmtjBF1YWkJRNSsHGxMRTltWX1oBexYzbWYEUV1fQ10AGjJZfMnF8oHV_d_CidTxw9Df9oz_3EgdCh0RE0hUVldtCXsU; shshshfpa=02d19590-d1e4-c91f-76d9-50b5b48caeae-1696955111; shshshfpx=02d19590-d1e4-c91f-76d9-50b5b48caeae-1696955111; TrackID=1P1YIoOSuMvq9KVQS8e4qaKAWslU3bHIlXwpUNeXUOPY_dPOhYcH5fl6XgaIzKppd5zTuGg52Ql9Ht7h1LNA62ZkhO1G3xwkTKekmP3nhjjmnOr5rzvlohhH3EkChqHLB; thor=D3FCA70DCE7542F87C212B790D3JDaxNfPy83okP3kLScwCkGiuMcyC4Pcyn8202E9E708F27CB58F480D2CC3FE67C9253747FE21007250E37AE528C577139FEEC81E6EE68034351A54BE200FF3JDaxNfPy83okP3kLScwCkGiuMcyC4Pcyn7n92UtFE03B1646F11A6B796AEE7DE71C760EDFF210BD03D24599A6CFF007C0D40BA49D; pin=23117; unick=jd2311kga; _tp=D8kjVbHzTJzgqxcxaN3m1w%3D%3D; _pst=23117; ipLoc-djd=24-2144-3909-58335; 3AB9D23F7A4B3C9B=IPF6PUOISQRNPNXNQVLJJVKQVBTAvEt16MoRnbUfHBdCarU9683JDaxNfPy83okP3kLScwCkGiuMcyC4PcynYGLMEE; flash=2_YNg0msef1iArLpGWQBwhJos62BkQWLuFuDD-HGOLK2KKuPtQ08qYx9js2jlEHwoRT7AVTOjRo8iR1-PT6ZsT8ZDnqdgMfbeoSNMJvJa8qphobenATQ0WXPYP62_XgiF1J7II6jY1qovmiIDadA7rd5tHyAVpTzEsqpI6xVJ9b6D*; __jda=209449046.797222838.1720272224.1720293360.1721239059.3; __jdc=209449046; __jdv=209449046|baidu|-|organic|notset|1721239059356; 3AB9D23F7A4B3CSS=jdd03IPF6PUOISQRNPNXNQVLJJVKQVBTAvEt16MoRnbUfHBdCarU9683JDaxNfPy83okP3kLScwCkGiuMcyC4PcynvEt16MoRnbUfHBdCarU9683KT3AsB67n92UtFUX; _gia_d=1; shshshfpb=BApXcdm_fwvVAJzuAI6Mnq8QQOcIPSh90B9TUVj599xJ1MlKCa4O2; __jdb=209449046.5.797222838|3.1721239059; RT=\"z=1&dm=jd.com&si=zpw2ttxi9&ss=lyq5alej&sl=6&tt=3x4&ld=z4s&nu=3d2f85352c70c73af100bf1449967844&cl=x78\"\r\n\r\n;"; string uuid = cookies.GetContentPart("__jdu=", ";"); string __jda = cookies.GetContentPart("__jda=", ";"); if (__jda.Split('.').Length > 1) { uuid = __jda.Split('.')[1]; } string useragent = _account.user_agent; if (string.IsNullOrEmpty(useragent)) useragent = ProviderFakeUserAgent.RandomComputer; string url = $"https://api.m.jd.com/api?functionId=unionPromoteLinkService&" + $"appid=unionpc&_={ts}&loginType=3&uuid={uuid}"; var args = new { funName = "getCode", param = new { couponLink = "", isPinGou = 0, materialId = result.itemId, materialType = 1, planId = 3479956501, promotionType = 15, receiveType = "cps", wareUrl = wareUrl, isSmartGraphics = 0, command = 1, ext1 = "618|pc|".UrlEncode() }, lientPageId = "jingfen_pc" }; string data = args.Convert2Json().UrlEncode(); WebClientUtility client = new WebClientUtility(); client.Proxy = _proxy; #if DEBUG client.Proxy = new WebProxy { Address = new Uri("http://bjapi.molilian.com:20063"), //Credentials = new NetworkCredential("t12881967077999", "6a1eh304") }; client.Proxy = null; #endif client.SetContentType("application/x-www-form-urlencoded"); client.AddHeaders("X-Referer-Page", "https://union.jd.com/proManager/index"); client.AddHeaders("X-Rp-Client", "h5_1.0.0"); client.AddHeaders("Referer", "https://union.jd.com/"); client.AddHeaders("Origin", "https://union.jd.com"); client.UserAgent = useragent; client.AddHeaders("Cookie", cookies); client.Post($"body={data}"); var response = await client.RequestAsync(url, "POST", cancellationToken); //if (response.ResponseMessage.StatusCode == HttpStatusCode.Forbidden) //{ // result.success = false; // result.message = "转链失败"; // result.reason = "nologin"; // result.shortLinkurl = wareUrl; // result.deeplink_url = GetDeeplink(result.shortLinkurl); // return result; //} string body = response.Body(); var root = body.Convert2JsonElement(); int code = root.Read("code"); string message = root.Read("message"); string shortCode = root.PathRead("data.shortCode"); if (code == 200) { result.success = true; result.message = "OK"; result.shortLinkurl = shortCode; result.content = result.shortLinkurl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); } else { if (string.IsNullOrEmpty(body)) message = "网络异常"; result.success = false; result.message = "转链失败"; result.reason = message; result.shortLinkurl = wareUrl; result.deeplink_url = GetDefaultStyleDeeplink(result.shortLinkurl); _ = new LoggerLibrary("JdUnion", "GetPromotionByCrawlerAsync").Info(body).SaveAsync(); } return result; } } public class JdData { public int code { get; set; } public string message { get; set; } public string requestId { get; set; } public JdClickData data { get; set; } } public class JdClickData { public string shortURL { get; set; } public string clickURL { get; set; } public string jCommand { get; set; } } public class JdUnionResponse { public JdUnionOpenPromotionCommonGetResponce jd_union_open_promotion_common_get_responce { get; set; } public JdUnionOpenPromotionCommonGetResponce jd_union_open_promotion_bysubunionid_get_responce { get; set; } } public class JdUnionOpenPromotionCommonGetResponce { public string code { get; set; } public string getResult { get; set; } public string message { get; set; } public string requestId { get; set; } } }