0 امتیاز

من هنوز به جوابم نرسیدم.

اول این سایت رو ببینید:http://www.tinyz.us

خوب وقتی که وارد سایت می شید ازتون نام کاربری و رمز و... می خواد من اون اطلاعات رو دارم .

حالا می خوام که با سی شارپ به یک صفحه ای از اون سایت متصل بشم

ولی مشکل اینجاست که وقتی می خوام صفحه مورد نظر رو بررسی کنم میاد همون صفحه ورود رو بررسی میکنه چون باید قبلا وارد شده باشم.

  اینترنت دانلود منیجر  معروف

یه قابلیت داره که با کلیک راست تو مرورگر  و انتخاب گزینه دانلود همه لینک ها کل لینک ها رو پیدا میکنه ،بدون مشکل، پیدا کردنش رو بلدم ولی اون مشکل ورود اعصابمو خورد کرده

picture


 

بسته شده
لطفا دقیق جواب بدید
توسط (125 امتیاز) 3 10

2 پاسخ

+1 امتیاز
 
بهترین پاسخ

شما میتونید برای راحت تر شدن کارتون از API های MSC استفاده کنید

برای کپچر و جداسازی لینک ها از HtmlAgilityPack استفاده کنید

لازم به ورود با کپچا و این چیزا ندارید

فقط کافیه با کوکی هایی که قبلا لاگین کردید این لینک رو فراخونی کنید و کوکی هارو آپدیت کنید تا از ایجاد خطا جلوگیری کنید(نیاز به آپدیت کوکی اصلی نیست)

میتونید از این کلاس استفاده کنید که چند وقت پیش نوشتم:

(کار این کلاس اینه که لاگین کنه و صفحه مورد نظر رو فراخونی کنه و لینک های دانلود رو جداسازی و تبدیل به لینک مستقیم کنه و همراه با اطلاعات لینک در Item قرار بده)

//                                                      Writed By Rextor in 5/10/2016
//                                             For update just login to site and past all cookies
//                                                     Films and seryals by link page


using System.Collections.Generic;
using System.Text.RegularExpressions;

using HtmlAgilityPack;
using MSC;
using MSC.Net;

namespace Leecher.Scripts.Films
{
    public class Item
    {
        public string Info { set; get; }

        public string Link { set; get; }
    }
    class TinyMoviez
    {
        public static List<Item> GetLinks(string link_Page)
        {
            List<Item> items = new List<Item>();
            string url = link_Page;
            Config config = new Config();
            Requests re = new Requests();
            RequestManage login = new RequestManage();
            //Login
            config.Cookies = "Your Cookies Login";
            config.LoginURL = "http://20tinymoviez.net/user_cp.php";
            config.KeepAlive = true;
            config.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0";
            config.Method = "GET";
            login = re.GetPageSource(null, config, null, config.LoginURL);
            config.Headers = "Upgrade-Insecure-Requests:1";
            config.LoginURL = login.Headers["Location"];
            RequestManage login2 = re.GetPageSource(login, config, null, config.LoginURL);
            //Get Link
            config.Referer = "http://tinyz.us/tt0367478?wake-of-death";
            config.LoginURL = url;
            RequestManage manage = re.GetPageSource(login2, config, null, config.LoginURL);
            HtmlDocument HD = new HtmlDocument();
            HD.LoadHtml(manage.SourcePage);
            //Get Page
            int i1 = 0;
            bool inFound = false;
            string Info = "";
            string Link = "";
            while (true)
            {
                i1++;
                try
                {
                    if (!inFound)
                    {
                        Info = HD.DocumentNode.SelectSingleNode("//*[@id='links']/div[" + i1.ToString() + "]").InnerText;
                        inFound = true;
                        if (Info == null)
                            break;
                    }
                    else
                    {
                        try
                        {
                            string neh = "";
                            Link = HD.DocumentNode.SelectSingleNode("//*[@id='links']/div[" + i1.ToString() + "]").InnerHtml;
                            Match m = Regex.Match(Link, "<a[^>]* href='([^ ']*)'");
                            neh = m.Groups[1].ToString();
                            Link = neh;
                        }
                        catch { }
                        config.AllowAutoRedirect = false;
                        config.Method = "";
                        RequestManage mg = re.GetPageSource(manage, config, null, "http://tinyz.us/" + Link);
                        Link = mg.Headers["Location"];
                        Item item = new Item();
                        item.Info = Info;
                        item.Link = Link;
                        items.Add(item);
                        Info = "";
                        Info = "";
                        inFound = false;
                    }
                }
                catch { break; }
            }
            if (items.Count == 0)
            {
                int i2 = 0;
                string Info2 = "";
                string Link2 = "";

                string body = HD.DocumentNode.SelectSingleNode("//*[@id='page']/div[2]").InnerHtml;
                HD.LoadHtml(body);
                while (true)
                {
                    i2++;

                    try
                    {
                        var hrefList = HD.DocumentNode.SelectSingleNode("//a[" + i2.ToString() + "]");
                        Info2 = HD.DocumentNode.SelectSingleNode("//a[" + i2.ToString() + "]").InnerText;
                        if (Info2 == "ارسال" && i2 != 1)
                        {
                            Item it = new Item();
                            it.Info = "Reqeust again";
                            it.Link = "Not found";
                            items.Add(it);
                            return items;
                        }
                        string her = hrefList.GetAttributeValue("href", "Notfound").ToString();
                        if (her != "Notfound")
                        {
                            Link2 = her;
                            config.AllowAutoRedirect = false;
                            config.Method = "";
                            RequestManage mg = re.GetPageSource(manage, config, null, "http://tinyz.us/" + Link2);
                            Link2 = mg.Headers["Location"];
                            Item item = new Item();
                            item.Link = Link2;
                            item.Info = Info2;
                            items.Add(item);
                        }
                        else if (i2 != 1) break;
                        Info2 = "";
                        Info2 = "";
                    }
                    catch { }
                }
            }
            return items;
        }
    }
}

حالا فقط با چند کد ساده میتونید لینک های صفحه رو استخراج کنید و در آرایه از نوع Item بریزید

string url = "http://tinyz.us/dl43862";
            List<Scripts.Films.Item> i = new List<Scripts.Films.Item>();
            i = TinyMoviez.GetLinks(url);
            foreach (Scripts.Films.Item it in i)
                Console.WriteLine("Info: {0}\nLink {1}", it.Info, it.Link);
            Console.ReadLine();

MSC API

 

بدرود

اول تمام لینک هایی رو که توی پروژه هست رو درست کنید 

مثلا لینک اصلی

http://tinyz.us

هست ولی توی سایت قرار دادم به صورت 

"<a href="http://tinyz.us/" "="" rel="nofollow">http://tinyz.us/"</a>

شده

و این که کوکی هارو باید مقدار دهی کنید MSC به صورت رشته ای این مورد رو از شما میپذیره

برای دریافتش با مرورگر فایرفاکس و با پلاگین HTTPFox میتونید بعد ورود هر درخواستی که به سایت ارسال میشه رو ببینید (کوکی هارو فقط کپی کنید و جاگذین کنید

توسط (350 امتیاز) 1 6 29
ویرایش شده توسط
توسط (125 امتیاز) 3 10
0 امتیاز

سلام ، از همون تاپیک قبلی برای ادامه بحث استفاده می کردید بهتر بود . در همینجا بحث رو ادامه بدین تا به جوابتون برسید . شما برای Login به یک سایت باید username و password رو به اون صفحه بدین . اگر ورود شما موفقیت آمیز باشه سایت یک Cookie در کامپیوتر شما قرار میده که با استفاده از اون Cookie در درخواست های بعدی می فهمه که شما قبلا در سایت Login کردید . دلیل اینکه IDM اون لینک ها رو میشناسه اینه که به صورت Extension هست و به راحتی می تونه به محتویات اون صفحه بدون Login دسترسی داشته باشه. شما با استفاده از ابزار Fiddler ابتدا بررسی کنید که در زمان Login چه درخواستی ( با چه پارامتر ، Header ,.. ) ارسال میشه سپس با استفاده از کدی شبیه زیر اون اطلاعات رو دقیقا بفرستید و Cookie دریافت شده رو نگهداری کنید. سپس می تونید از HAP ( HtmlAglityPack) استفاده کنید : 

CookieCollection Cookies = new CookieCollection();
            var web = new HtmlWeb();
            web.OverrideEncoding = Encoding.Default;
            web.UseCookies = true;
            web.PreRequest += (request) =>
            {
                if (request.Method == "POST")
                {
                    string payload = request.Address.Query;
                    byte[] buff = Encoding.UTF8.GetBytes(payload.ToCharArray());
                    request.ContentLength = buff.Length;
                    request.ContentType = "application/x-www-form-urlencoded";
                    System.IO.Stream reqStream = request.GetRequestStream();
                    reqStream.Write(buff, 0, buff.Length);
                }

                request.CookieContainer.Add(Cookies);

                return true;
            };

            web.PostResponse += (request, response) =>
            {
                if (request.CookieContainer.Count > 0 || response.Cookies.Count > 0)
                {
                    Cookies.Add(response.Cookies);
                }
            };

            string baseUrl = "Your Website URL";
            string urlToHit = baseUrl + "?QueryString with Login Credentials";
            HtmlDocument doc = web.Load(urlToHit, "POST");

 

سایت شما دارای Captcha هست . بنده Captcha Breaker خوب سراغ ندارم . اگر هم باشه تجاریه ست و باید مبلغی پول رو بدین. البته می تونید از tesseract که Open Source  هست استفاده کنید. ولی به هر حال باید ابتدا Login کنید وبعد شروع به استخراج لینک ها کنید ، می تونید از یک web browser استفاده کنید.
توسط (6,145 امتیاز) 5 11 116
سلام شما درست جواب من رو نمی دید من همه ی این هارو می دونم

من می خوام یه جوری بدون دردسر اول به صورت دستی وارد بشم بعدش برنامه دیگه نیاز به ورود نداشته باش

من توضیح نمی خوام جواب می خوام.
توسط (125 امتیاز) 3 10
سوال جدید

2,332 سوال

2,871 پاسخ

3,725 دیدگاه

3,905 کاربر

دسته بندی ها

...