Jump to content

Recommended Posts

Tình hình là mị đã và đang học về request bằng xNet bên C# nên cũng có ít nhiều kinh nghiệm request, tuy nhiên vẫn còn rất nhiều điều cần học hỏi và trao đổi với các anh/chị/em/dì/chú/bác. Nếu ai có cùng sở thích, ai đang muốn học cũng như ai muốn trau dồi về request bên C# (xNet, leaf-xNet, httpclient, ...) thì hãy đóng góp và đặt câu hỏi ở chủ đề này nhé.

Mị xin chân thành cảm ơn sự đóng góp cũng như các câu hỏi đến từ các bằng hữu gần xa, cùng nhau học hỏi, cùng nhau tiến bộ nào. :a03:

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
56 phút trước, Hố Hố Hố said:

Mấy anh/ chị cho em hỏi.
VD em có link "https://vipfb.es/". Khi request đến sẽ có đc 1 captcha. Nhưng kiểu như captcha chỉ request đc 1 lần thì làm sao để tải ảnh đó về mình giải tay đc ạ.

 

Để login trang vipfb.es đó ta có thể làm như sau :
Bước 1 : bắt request trên trình duyệt, ta được data post như hình dưới :

nk62yTi.png

Vậy datapost của ta cần có là cpth0bdcd2917cc1, plogin . Các giá trị của key này ta lấy ở đâu nhỉ ?? mò tí thì lấy ngay trong sources chứ đâu nữa, các bạn nhấn chuột phải vào hình captcha, và chọn như hình để bắt được link hình ảnh captcha để lấy hình ảnh về mà gõ vào =)) ...:167788143418472:

DT7kz11.png

Tiện thể nhìn xuống 1 tí thấy ngay dòng khả nghi

<input id="wtoken" autocomplete="off" name="0bdcd2917cc1" ....

Cái key thứ 2 là 1 dãy số lạ hoắc, có lẽ nó đây, chính là nó =)) ... vậy là 1 công đôi việc, ta lấy được giá trị thứ 2 nhé :3 .. key cuối là plogin có value là rỗng, khỏi cần tìm. Thế là đã đầy đủ các thứ, giờ ta request post thôi .:167788130085140:

Code mẫu :

HttpRequest request = new HttpRequest();
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36";
request.Cookies = new CookieDictionary();
HttpResponse response = request.Get("https://vipfb.es/");
string KetQua = response.ToString();
string wToken = Regex.Match(KetQua, @"id=""wtoken"".*? name=""(.*?)""").Groups[1].Value;
string LinkCaptcha = "https://vipfb.es/" + Regex.Match(KetQua, @"src=""(/_CAPTCHA.php.*?)""").Groups[1].Value;
response = request.Get(System.Net.WebUtility.HtmlDecode(LinkCaptcha));
response.ToFile("captcha.png");
//ở đây dừng lại và mở file ảnh captcha vừa tải về lên đọc nhập nội dung trong ảnh vào textbox captcha . Đoạn này bạn tử xử lý nhé.
MultipartContent Data = new MultipartContent()
{
    {new StringContent("nội dung chữ trong ảnh captcha bạn tải về"),"cpth"},
    {new StringContent("token của bạn"),wToken},
    {new StringContent(""),"plogin"}
};
response = request.Post("https://vipfb.es/",Data);
KetQua = response.ToString();

 

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites

Cho mềnh hỏi, xNet bị xung đột khi dùng thread. Ví dụ khi mình thread này requests tới gì đó mà requests này chưa xử lý xong và trả dữ liệu về, thread kia cùng gửi thì sẽ trả về lỗi tranh giành quyền xử dùng thì làm sao để giải quyết ạ :).
Mình thực sự rất khó chịu khi bị vấn đề này nên có code 1 thư viện khác trên nên webhttprequest, nhưng việc socksproxy nó ko dc ổn định như thằng xNet tí tẹo lào :'( 

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
2 phút trước, PhuongLazy said:

Cho mềnh hỏi, xNet bị xung đột khi dùng thread. Ví dụ khi mình thread này requests tới gì đó mà requests này chưa xử lý xong và trả dữ liệu về, thread kia cùng gửi thì sẽ trả về lỗi tranh giành quyền xử dùng thì làm sao để giải quyết ạ :).
Mình thực sự rất khó chịu khi bị vấn đề này nên có code 1 thư viện khác trên nên webhttprequest, nhưng việc socksproxy nó ko dc ổn định như thằng xNet tí tẹo lào :'( 

Bị xung đột do mình quản lý thread chồng chéo thôi bạn , bạn cho tớ ví dụ cụ thể để tớ xem nhé, chứ bạn hỏi vầy thì tớ trả lời theo lý thuyết là quản lý từng thread một thôi. Còn nếu bạn nói tranh giành quyền xử lý như kiểu crossthread  thì bạn có thể sử dụng invoke hoặc đơn giản hơn là đặt cái dòng lệnh này bên dưới lệnh InitializeComponent() :

CheckForIllegalCrossThreadCalls = false;

Nhưng lệnh này nghe nói cũng hay xung đột :167788263418460:.

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites

Làm sao để nâng tay nghề về request đc ạ.
Em đã làm đc các request như như : .... à mà request là cái j vậy ạ :v
Em đùa thôi. Em làm đc các request như login, reg của nhìu game rồi. thì nên tập làm j để cải thiện hiệu suất cũng như nâng tay nghề ạ.
(reg zingme cũ, reg fb, reg yahoo, và 1 số loại đăng nhập khác ạ.)

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites

@Thiên Chi Kiều Nữ
Kiều như mềnh có 2 thread nha. 
2 thread này cùng request login fb or post cái gì đó mà 1 trong 2 requests còn đang xử lý chưa trả dữ liệu về thì bị xung đột thư viện xNet.
Ví dụ đơn giản là khi ghi file bằng nhiều thread một lúc nào đó nó tranh giành nhau ghi dữ liệu ý ném casth  lỗi.mình có dùng lock object nhưng củ chuối vãi hồn, buộc phải xử lý xong cái này mới được tiếp tục cái kia.
p/s: tiện cho mình hỏi chỗ nào nhấn trả lời comment bài viết trên site này thế =.= 
 

Edited by PhuongLazy

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
1 hour ago, Nguyễn Hoàng Vũ said:

Làm sao để nâng tay nghề về request đc ạ.
Em đã làm đc các request như như : .... à mà request là cái j vậy ạ :v
Em đùa thôi. Em làm đc các request như login, reg của nhìu game rồi. thì nên tập làm j để cải thiện hiệu suất cũng như nâng tay nghề ạ.
(reg zingme cũ, reg fb, reg yahoo, và 1 số loại đăng nhập khác ạ.)

Bạn ở đây hỏi đáp các câu hỏi ở topic này với mị là đươc, có công mài sắt có ngày nên kim, mị cũng mới tập tành request thôi nhưng mị tin mị sẽ phá đảo lãnh vực request này =)) với lại bạn nên học thêm js với debug js, vì thực sự  httprequest không khó, chỉ khó ở chỗ mấy cái giá trị cần cho request hay bị ẩn trong js

 

1 hour ago, PhuongLazy said:

@Thiên Chi Kiều Nữ
Kiều như mềnh có 2 thread nha. 
2 thread này cùng request login fb or post cái gì đó mà 1 trong 2 requests còn đang xử lý chưa trả dữ liệu về thì bị xung đột thư viện xNet.
Ví dụ đơn giản là khi ghi file bằng nhiều thread một lúc nào đó nó tranh giành nhau ghi dữ liệu ý ném casth  lỗi.mình có dùng lock object nhưng củ chuối vãi hồn, buộc phải xử lý xong cái này mới được tiếp tục cái kia.
p/s: tiện cho mình hỏi chỗ nào nhấn trả lời comment bài viết trên site này thế =.= 
 

Như cái ví dụ đơn giản ghi file bằng nhiều thread, thì theo tớ là sử dụng bộ nhớ đệm, lưu  hết tất cả dữ liệu  vào một mảng sau đó mới ghi ra file. Hoặc có cái kỹ thuật này mà tớ nắm cũng ko vững lắm :D bạn tham khảo code này nhé :

#Tạo 1 app winform mới, tạo 1 button với name là button1, sau đó copy và paste đoạn code dươi đây chạy
#Chú ý : có thiếu thư viện System.IO và Thread thì bạn add thêm vào nhé
        int Stt = 0;
        private void Button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                Thread Th = new Thread(new ThreadStart(Multi))
                { IsBackground = true };
                Th.Start();
            }
            MessageBox.Show("xong");
        }

        private void Multi()
        {
            string File = @"file.txt";
            Stt += 1;
            WriteToFileThreadSafe(Stt.ToString(), File);
        }

        private static ReaderWriterLockSlim _readWriteLock = new ReaderWriterLockSlim();
        public void WriteToFileThreadSafe(string text, string path)
        {
            // Set Status to Locked
            _readWriteLock.EnterWriteLock();
            try
            {
                // Append text to the file
                using (StreamWriter sw = File.AppendText(path))
                {
                    sw.WriteLine(text);
                    sw.Close();
                }
            }
            finally
            {
                // Release lock
                _readWriteLock.ExitWriteLock();
            }
        }

P/s : trả lời nhanh thì bạn bấm vào đây như ảnh dưới này 

oB8YjpL.png

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
1 giờ trước, Thiên Chi Kiều Nữ said:

Bạn ở đây hỏi đáp các câu hỏi ở topic này với mị là đươc, có công mài sắt có ngày nên kim, mị cũng mới tập tành request thôi nhưng mị tin mị sẽ phá đảo lãnh vực request này =)) với lại bạn nên học thêm js với debug js, vì thực sự  httprequest không khó, chỉ khó ở chỗ mấy cái giá trị cần cho request hay bị ẩn trong js

 

Như cái ví dụ đơn giản ghi file bằng nhiều thread, thì theo tớ là sử dụng bộ nhớ đệm, lưu  hết tất cả dữ liệu  vào một mảng sau đó mới ghi ra file. Hoặc có cái kỹ thuật này mà tớ nắm cũng ko vững lắm :D bạn tham khảo code này nhé :


#Tạo 1 app winform mới, tạo 1 button với name là button1, sau đó copy và paste đoạn code dươi đây chạy
#Chú ý : có thiếu thư viện System.IO và Thread thì bạn add thêm vào nhé
        int Stt = 0;
        private void Button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                Thread Th = new Thread(new ThreadStart(Multi))
                { IsBackground = true };
                Th.Start();
            }
            MessageBox.Show("xong");
        }

        private void Multi()
        {
            string File = @"file.txt";
            Stt += 1;
            WriteToFileThreadSafe(Stt.ToString(), File);
        }

        private static ReaderWriterLockSlim _readWriteLock = new ReaderWriterLockSlim();
        public void WriteToFileThreadSafe(string text, string path)
        {
            // Set Status to Locked
            _readWriteLock.EnterWriteLock();
            try
            {
                // Append text to the file
                using (StreamWriter sw = File.AppendText(path))
                {
                    sw.WriteLine(text);
                    sw.Close();
                }
            }
            finally
            {
                // Release lock
                _readWriteLock.ExitWriteLock();
            }
        }

P/s : trả lời nhanh thì bạn bấm vào đây như ảnh dưới này 

oB8YjpL.png

https://www.w3schools.com/code/tryit.asp?filename=G1EB42O07JVR
Bạn cho mình hỏi ở C# làm sao để chạy đoạn js này return ra kết quả với. Mình có mò tới thư viện Jurassic.ScriptEngine.Execute để chạy mà sao báo lỗi hoài :"> 

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
26 phút trước, PhuongLazy said:

https://www.w3schools.com/code/tryit.asp?filename=G1EB42O07JVR
Bạn cho mình hỏi ở C# làm sao để chạy đoạn js này return ra kết quả với. Mình có mò tới thư viện Jurassic.ScriptEngine.Execute để chạy mà sao báo lỗi hoài :"> 

z6jgfpS.png

Đáp án bạn muốn hỏi như thế này có phải không ?

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
8 phút trước, Thiên Chi Kiều Nữ said:

z6jgfpS.png

Đáp án bạn muốn hỏi như thế này có phải không ?

Đúng rồi bạn, thư viện của bác huân có làm sẵn hỗ trợ mình bt chạy r. C# mình dùng thư viện hỗ trợ chạy js (Jurassic.ScriptEngine.Execute, Microsoft.JScript) mà sao cứ báo lỗi mãi ~~ .
Mới học C# còn bỡ ngỡ qué :) 

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
2 giờ trước, PhuongLazy said:

Đúng rồi bạn, thư viện của bác huân có làm sẵn hỗ trợ mình bt chạy r. C# mình dùng thư viện hỗ trợ chạy js (Jurassic.ScriptEngine.Execute, Microsoft.JScript) mà sao cứ báo lỗi mãi ~~ .
Mới học C# còn bỡ ngỡ qué :) 

:167788263418460:tớ cũng chưa học cái thư viện này, hiện tại thì tớ cũng chưa biết cách chạy js trên nền c# ... tạm thời xài autoit thoai bạn =.='' .. hóng xem có ai biết ngang qua trả lời thôi

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
13 giờ trước, Nguyễn Văn Tất said:

- Bác thử login vào trang "https://vipfb.es/" làm phần request hoặc follow được không ạ ?? em làm được mà nó trả về "Adblock"

Cái này mị từng được sư huynh Huân Hoàng chỉ giáo rồi, mấy trang nó báo Adblock các hạ nạp cookie  _ga=1 cho request để đánh lừa nó là ra ạ, có luôn 1 code tương tự xài thủ thuật đó ở địa chỉ này nè: :classic_love:

Quote

 

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Trả lời chủ đề này...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...