Thiên Chi Kiều Nữ 920 Đã viết 22/03/2019 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. 2 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Hố Hố Hố 0 Đã viết 22/03/2019 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 ạ. Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 920 Đã viết 22/03/2019 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 : Vậy datapost của ta cần có là cpth, 0bdcd2917cc1, 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 =)) ... 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 . 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(); 2 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
PhuongLazy 0 Đã viết 23/03/2019 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 :'( Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 920 Đã viết 23/03/2019 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 . Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Admin 838 Đã viết 23/03/2019 @Thiên Chi Kiều Nữ đã ghim bài lên top cho thím rồi nhé :"3 cố gắng phát huy khả năng.. Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Nguyễn Hoàng Vũ 2 Đã viết 23/03/2019 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 ạ.) 1 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
PhuongLazy 0 Đã viết 23/03/2019 (edited) @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 23/03/2019 by PhuongLazy Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 920 Đã viết 23/03/2019 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 1 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
PhuongLazy 0 Đã viết 23/03/2019 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 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 :"> Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 920 Đã viết 23/03/2019 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 :"> Đáp án bạn muốn hỏi như thế này có phải không ? Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
PhuongLazy 0 Đã viết 23/03/2019 8 phút trước, Thiên Chi Kiều Nữ said: Đá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é :) Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 920 Đã viết 23/03/2019 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é :) 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 1 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Nguyễn Văn Tất 0 Đã viết 24/03/2019 (edited) - 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" Edited 24/03/2019 by Nguyễn Văn Tất Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 920 Đã viết 24/03/2019 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è: Quote https://www.facebook.com/2772408832984619 1 1 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites