示例#1
0
        static void worker(Object s)
        {
            while (true)
            {
                try
                {
                    using (HttpRequest req = new HttpRequest())
                    {
                        HttpResponse res;
                        Proxy        proxy;
                        string       url;
                        string       urlToGet;
                        string       cl;
                        string       ei;
                        string       of;
                        string       vm;

                        lock (locker)
                        {
                            if (proxyType == 0 && scraper.Time < (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds - 300)
                            {
                                scraper.Scrape();
                            }
                            proxy = scraper.Next();
                        }

                        switch (proxyType)
                        {
                        case 0:
                        case 1:
                            req.Proxy = proxy.Http;
                            break;

                        case 2:
                            req.Proxy = proxy.Socks4;
                            break;

                        case 3:
                            req.Proxy = proxy.Socks5;
                            break;
                        }

                        req.UserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1";

                        res = req.Get($"https://m.youtube.com/watch?v={id}");

                        url = res.ToString().Split(new string[] { "videostatsWatchtimeUrl\\\":{\\\"baseUrl\\\":\\\"" }, StringSplitOptions.None)[1];
                        url = url.Split(new string[] { "\\\"}" }, StringSplitOptions.None)[0];
                        url = url.Replace(@"\\u0026", "&").Replace("%2C", ",").Replace(@"\/", "/");

                        cl = url.Split(new string[] { "cl=" }, StringSplitOptions.None)[1].Split('&')[0];
                        ei = url.Split(new string[] { "ei=" }, StringSplitOptions.None)[1].Split('&')[0];
                        of = url.Split(new string[] { "of=" }, StringSplitOptions.None)[1].Split('&')[0];
                        vm = url.Split(new string[] { "vm=" }, StringSplitOptions.None)[1].Split('&')[0];

                        urlToGet = $"https://s.youtube.com/api/stats/watchtime?ns=yt&el=detailpage&cpn=isWmmj2C9Y2vULKF&docid={id}&ver=2&cmt=7334&ei={ei}&fmt=133&fs=0&rt=1003&of={of}&euri&lact=4418&live=dvr&cl={cl}&state=playing&vm={vm}&volume=100&c=MWEB&cver=2.20200313.03.00&cplayer=UNIPLAYER&cbrand=apple&cbr=Safari%20Mobile&cbrver=12.1.15E148&cmodel=iphone&cos=iPhone&cosver=12_2&cplatform=MOBILE&delay=5&hl=ru&cr=GB&rtn=1303&afmt=140&lio=1556394045.182&idpj=&ldpj=&rti=1003&muted=0&st=7334&et=7634";

                        req.AddHeader("Referrer", $"https://m.youtube.com/watch?v={id}");

                        req.Get(urlToGet);

                        lock (loglocker)
                        {
                            botted++;
                            log();
                        }
                    }
                }
                catch (Exception)
                {
                    lock (locker)
                    {
                        errors++;
                        log();
                    }
                }
            }
        }
示例#2
0
        static void worker(Object s)
        {
            while (true)
            {
                try
                {
                    using (HttpRequest req = new HttpRequest())
                    {
                        HttpResponse res;
                        Proxy        proxy;
                        string       url;
                        string       urlToGet;
                        string       cl;
                        string       ei;
                        string       of;
                        string       vm;

                        double vol = random.Next(200, 1000) / 10d;

                        proxy = scraper.Next();

                        switch (proxyType)
                        {
                        case Https:
                            req.Proxy = proxy.Http;
                            break;

                        case Public:
                        case Socks4:
                            req.Proxy = proxy.Socks4;
                            break;

                        case Socks5:
                            req.Proxy = proxy.Socks5;
                            break;
                        }

                        req.UserAgent = UserAgent.Get();

                        res = req.Get($"https://m.youtube.com/watch?v={id}");

                        url = url_re.Match(res.ToString()).Groups[1].Value;
                        url = url.Replace(@"\\u0026", "&").Replace("%2C", ",").Replace(@"\/", "/");

                        cl = cl_re.Match(url).Groups[1].Value;
                        ei = ei_re.Match(url).Groups[1].Value;
                        of = of_re.Match(url).Groups[1].Value;
                        vm = vm_re.Match(url).Groups[1].Value;

                        cl = url.Split(new string[] { "cl=" }, StringSplitOptions.None)[1].Split('&')[0];
                        ei = url.Split(new string[] { "ei=" }, StringSplitOptions.None)[1].Split('&')[0];
                        of = url.Split(new string[] { "of=" }, StringSplitOptions.None)[1].Split('&')[0];
                        vm = url.Split(new string[] { "vm=" }, StringSplitOptions.None)[1].Split('&')[0];

                        urlToGet = $"https://s.youtube.com/api/stats/watchtime?ns=yt&el=detailpage&cpn=isWmmj2C9Y2vULKF&docid={id}&ver=2&cmt=7334&ei={ei}&fmt=133&fs=0&rt=1003&of={of}&euri&lact=4418&live=dvr&cl={cl}&state=playing&vm={vm}&volume={vol}&c=MWEB&cver=2.20200313.03.00&cplayer=UNIPLAYER&cbrand=apple&cbr=Safari%20Mobile&cbrver=12.1.15E148&cmodel=iphone&cos=iPhone&cosver=12_2&cplatform=MOBILE&delay=5&hl=ru&cr=GB&rtn=1303&afmt=140&lio=1556394045.182&idpj=&ldpj=&rti=1003&muted=0&st=7334&et=7634";

                        req.AddHeader("Referrer", $"https://m.youtube.com/watch?v={id}");
                        req.AddHeader("Host", "m.youtube.com");
                        req.AddHeader("Proxy-Connection", "keep-alive");
                        req.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
                        req.AddHeader("Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7");
                        req.AddHeader("Accept-Encoding", "gzip, deflate");

                        req.Get(urlToGet);

                        Interlocked.Increment(ref botted);
                        log();
                    }
                }
                catch
                {
                    Interlocked.Increment(ref errors);
                    log();
                }
            }
        }
示例#3
0
        static void Worker()
        {
            Random random = new Random();

            while (true)
            {
                try
                {
                    using (HttpRequest req = new HttpRequest())
                    {
                        HttpResponse res;
                        Proxy        proxy;

                        proxy = scraper.Next();

                        switch (proxyType)
                        {
                        case Https:
                            req.Proxy = proxy.Http;
                            break;

                        case Public:
                        case Socks4:
                            req.Proxy = proxy.Socks4;
                            break;

                        case Socks5:
                            req.Proxy = proxy.Socks5;
                            break;
                        }

                        req.UserAgentRandomize();

                        res = req.Get($"https://www.youtube.com/watch?v={id}");


                        string viewersTemp = res.ToString().Split(new[] { "\"viewCount\":{\"videoViewCountRenderer\":{\"viewCount\":{\"runs\":[{\"text\":\"" }, StringSplitOptions.None)[1].Split(':')[1].Split(new[] { "\"}]}," }, StringSplitOptions.None)[0].Trim();

                        try
                        {
                            int.Parse(viewersTemp.Trim());
                            viewers = viewersTemp;
                        }
                        catch { }

                        title = res.ToString().Split(new[] { "\"title\":{\"runs\":[{\"text\":\"" }, StringSplitOptions.None)[1].Split(new[] { "\"}]}," }, StringSplitOptions.None)[0].Trim();

                        string url = res.ToString().Split(new[] { "videostatsWatchtimeUrl\":{\"baseUrl\":\"" }, StringSplitOptions.None)[1].Split('"')[0];
                        url = url.Replace(@"\u0026", "&").Replace("%2C", ",").Replace(@"\/", "/");

                        string cl = url.Split(new string[] { "cl=" }, StringSplitOptions.None)[1].Split('&')[0];
                        string ei = url.Split(new string[] { "ei=" }, StringSplitOptions.None)[1].Split('&')[0];
                        string of = url.Split(new string[] { "of=" }, StringSplitOptions.None)[1].Split('&')[0];
                        string vm = url.Split(new string[] { "vm=" }, StringSplitOptions.None)[1].Split('&')[0];

                        byte[] buffer = new byte[100];

                        random.NextBytes(buffer);

                        string cpn = Convert.ToBase64String(buffer).Replace("=", "").Replace("/", "").Replace("+", "").Substring(0, 16);

                        int st = random.Next(1000, 10000);
                        int et = st + random.Next(200, 700);

                        int rt = random.Next(10, 200);

                        int lact = random.Next(1000, 8000);
                        int rtn  = rt + 300;

                        Dictionary <string, string> args = new Dictionary <string, string>();

                        args["ns"]        = "yt";
                        args["el"]        = "detailpage";
                        args["cpn"]       = cpn.ToString();
                        args["docid"]     = id;
                        args["ver"]       = "2";
                        args["cmt"]       = et.ToString();
                        args["ei"]        = ei;
                        args["fmt"]       = "243";
                        args["fs"]        = "0";
                        args["rt"]        = rt.ToString();
                        args["of"]        = of;
                        args["euri"]      = "";
                        args["lact"]      = lact.ToString();
                        args["live"]      = "dvr";
                        args["cl"]        = cl;
                        args["state"]     = "playing";
                        args["vm"]        = vm;
                        args["volume"]    = "100";
                        args["cbr"]       = "Firefox"; //TODO: parse from header
                        args["cbrver"]    = "83.0";    // ^
                        args["c"]         = "WEB";
                        args["cplayer"]   = "UNIPLAYER";
                        args["cver"]      = "2.20201210.01.00";
                        args["cos"]       = "Windows";
                        args["cosver"]    = "10.0";
                        args["cplatform"] = "DESKTOP";
                        args["delay"]     = "5";
                        args["hl"]        = "ru_RU";
                        args["rtn"]       = rtn.ToString();
                        args["aftm"]      = "140";
                        args["lio"]       = "1556394045.182";
                        args["idpj"]      = "-5";
                        args["ldpj"]      = "-8";
                        args["rti"]       = rt.ToString();
                        args["muted"]     = "0";
                        args["st"]        = st.ToString();
                        args["et"]        = et.ToString();

                        string urlToGet = buildUrl(args);

                        req.AddHeader("Referrer", $"https://www.youtube.com/watch?v={id}");
                        req.AddHeader("Host", "www.youtube.com");
                        req.AddHeader("Proxy-Connection", "keep-alive");
                        req.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
                        req.AddHeader("Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7");
                        req.AddHeader("Accept-Encoding", "gzip, deflate");

                        res = req.Get(urlToGet);
                        Interlocked.Increment(ref botted);
                    }
                }
                catch
                {
                    Interlocked.Increment(ref errors);
                }
            }
        }