Jump to content

Search the Community

Showing results for tags 'csharp'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Loại nội dung


Diễn đàn

  • Ban quản trị
    • Thông báo
    • Phòng họp
    • Phòng kỷ luật
  • Ngôn Ngữ Lập Trình
    • C Sharp
    • C/C++
    • AutoIt
    • AutoHotKey
    • Python
    • HTML/PHP/Javascipt
    • REGEX - Regular Expressions
  • Thuê code - Nhận code
    • Góc bán hàng
    • Người thuê code
    • Người nhận code
    • Bóc phốt - Cảnh báo lừa đảo
    • Góc trung gian
  • Máy Tính - Internet
    • Tin Nóng
    • Thủ Thuật Internet
    • Thế Giới Trò Chơi
    • Hệ Điều Hành Windows
    • Phần Mềm
    • MMO
  • Nhà Kho
    • Thùng Rác

Lịch

  • Community Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Lọc bởi số lượng của...

Đã tham gia

  • Start

    End


Group


About Me

Found 17 results

  1. 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. Xin chào các bạn ! Hôm nay mình nhận được một người đặt tools thao tác tự động với web, mình cũng có tìm hiểu qua trước đây rồi, nhưng chả biết gì cả, giờ vọc lại cũng vọc vạch được 1 tí, gọi là hướng dẫn cho các bạn nào mở đầu mới vào đỡ mất công tìm kiếm. Đồ nghề : Visual studio 2017 bản nào cũng được ( community,pro,enterprise ) thế thôi, à còn mạng internet nữa Bước 1 : Tạo winform mới nhé, rồi tạo 1 button để click cho nó dễ. Bước 2 : Nhấn chuột phải vào tên Project, chọn Manage Nuget Package... -> chọn Borrows -> gõ tên Selenium . Các bạn cần tải về những gì ? - Thư viện Selenium.Webdriver ( bắt buộc ) - Nếu bạn dùng Chrome thì tải : Selenium.Chrome.Webdriver - Nếu bạn dùng Firefox thì tải : Selenium.Firefox.Webdriver Bước 3 : Sử dụng thư viện Selenium bằng cách thêm 4 dòng này lên trên cùng, ở đây mình ví dụ với Browser Chrome nhoé (tương tự với Firefox ? using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Interactions; using OpenQA.Selenium.Support.UI; Bước 4 : Rồi bắt tay làm nào . Hàm khởi tạo trước nhé : IWebDriver driver = new ChromeDriver(); Giờ đến tác dụng của các command : 1.Muốn mở một trang web, ta dùng lệnh này : driver.Url="https://www.google.com.vn"; 2. Muốn lấy sources của trang web, ta dùng lệnh này : string Sources = driver.PageSources; 3. Muốn đợi 1 element nào đó xuất hiện : WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(d => d.FindElement(By.Id("element nào đó"))); 4. Muốn tác động vào 1 element nào đó, trước hết ta phải xem element đó nằm trong các thẻ nào, ở đây tớ sẽ lấy trang google làm mẫu nhoé. Sau khi sử dụng command ở 1. ta vào trang google nhấn F12 vào ô tìm kiếm Google,ở đây ta thấy có 3 cái attribute có thể lấy để tác động điền chữ vào ô tìm kiếm : Ví dụ 1 : tác động bằng ID : driver.FindElement(By.Id("lst-ib")).SendKeys("từ muốn điền"); Ví dụ 2 : tác động qua Class : driver.FindElement(By.ClassName("lst-ib")).SendKeys("từ muốn điền"); Ví dụ 3 : tác động qua Name : driver.FindElement(By.Name("lst-ib")).SendKeys("từ muốn điền"); Ví dụ 4 : tác động qua TagName : driver.FindElements(By.TagName("a")) //Tag ở đây chính là tag ở đầu < . ví dụ <a href="https://www.teamcodedao.com">Home Page</a> thì ở đây là tag a 5. Viết được từ cần viết vào ô rồi, vậy giờ mình muốn bấm vào nút tìm kiếm thì phải làm như thế nào ? À thì lại tưởng tự, ta tìm tới element có thể tác động được, lại F12 với chữ "Tìm với Google" với trang google tiếp ta thấy như hình dưới : Ta lại thấy xuất hiện attribute Name có thể tác động. Okemen, ta làm như sau : driver.FindElement(By.Name("btnK")).Submit(); Ở đây ta có 2 cách, 1 là submit, 2 là click, tác dụng như nhau thôi ? đều nhấn chuột vào cái button "Tìm với Google". 6. Bạn muốn thay đổi Profile ? No problem, chúng ta code như sau : ChromeOptions ChOpt = new ChromeOptions(); ChOpt.AddArgument("--profile-directory=Tên profile bạn cần"); ChOpt.AddArgument("--user-data-dir=C:\Users\Tên máy tính của bạn\AppData\Local\Google\Chrome\User Data"); //<< cái này tớ sử dụng Path mặc định của chrome, các bạn thay đổi nếu bạn đã thay đổi chỗ để profile IWebDriver driver = new ChromeDriver(ChOpt); Xong rất đơn giản phải không, nhưng đéo nói thì đéo ai biết cả ? .. 7. Một khi đã quá thuần thục và quen thuộc với Selenium, bạn lại muốn tắt cmn cái cửa sổ cmd đen xì đáng ghét ? mà đến giờ vẫn chưa biết làm cách nào ?? Hãy làm như bên dưới đây : ChromeDriverService Cds = ChromeDriverService.CreateDefaultService(); Cds.HideCommandPromptWindow = true; ChromeOptions ChOpt = new ChromeOptions(); ChOpt.AddArgument("--profile-directory=Tên profile bạn cần"); string PathMacDinh = Environment.ExpandEnvironmentVariables("%LOCALAPPDATA%\\Google\\Chrome\\User Data\\"); //ChOpt.AddArgument("--user-data-dir=C:\Users\Tên máy tính của bạn\AppData\Local\Google\Chrome\User Data"); //<< cái này tớ sử dụng Path mặc định của chrome, các bạn thay đổi nếu bạn đã thay đổi chỗ để profile ChOpt.AddArgument("--user-data-dir=" + PathMacDinh); IWebDriver driver = new ChromeDriver(Cds,ChOpt); Xong, các bạn nhấn F5 ngồi xem xem nó ra cái profile nào ? . 8. Chạy trực tiếp JS trên Browser , Selenium thật bá đạo :") string javaScript = "var evObj = document.createEvent('MouseEvents');"+ "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);"+ "arguments[0].dispatchEvent(evObj);"; IJavaScriptExecutor executor = driver as IJavaScriptExecutor; executor.ExecuteScript(javaScript, webElement); --------------------------------------------------------------------------------------------------------------------- (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return $('.cheese')[0]"); --------------------------------------------------------------------------------------------------------------------- IList labels = driver.FindElements(By.TagName("label")); IList inputs = (IList) ((IJavaScriptExecutor)driver).ExecuteScript( "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++) {" + "inputs.push(document.getElementById(labels.getAttribute('for'))); } return inputs;", labels); Trên đây là các bước khá cơ bản, đủ để bạn thao tác làm 1 kich bản nhè nhẹ với 1 số trang web rồi . Tớ sẽ cập nhật thêm. Cám ơn các bạn đã theo dõi.
  3. Chào các bạn, hôm nay mình xin hướng dẫn các bạn sử dụng thư viện json.net của newtonsoft :). Trong các request hàng ngày, đôi khi các bạn bắt gặp trang web trả về một chuỗi json chứ không phải là một sources html, chuỗi json này thường là kết quả trả về của một request api nào đó, hoặc ajax, rss..vv..vv. Chúng ta có thể lấy dữ liệu bằng cách sử dụng Regex thần thánh, nhưng nhiều khi để đơn giản đỡ nhức óc, chúng ta có thể sử dụng thư viện này cho đoạn chuỗi json. Trước hết chúng ta phân biệt, json trả về có 2 dạng như sau : Dạng 1 ( chuỗi thường ) : string json = @"{ CPU: 'Intel', Drives: [ 'DVD read/writer', '500 gigabyte hard drive' ] }"; Với dạng 1 chúng ta sử dụng lệnh sau để parse đoạn json đó : string json = @"{ CPU: 'Intel', Drives: [ 'DVD read/writer', '500 gigabyte hard drive' ] }"; JObject o = JObject.Parse(json); Dạng 2 ( mảng ) : string json = @"[ 'Small', 'Medium', 'Large' ]"; Với dạng 2 chúng ta sử dụng lệnh sau để parse đoạn json trên : string json = @"[ 'Small', 'Medium', 'Large' ]"; JArray a = JArray.Parse(json); Sau khi parse xong, việc chúng ta làm sẽ là lấy các giá trị trong mảng đó để sử dụng. Ở đây tớ lấy mẫu là dạng 1 nhé, dạng 2 tương tự, các bạn không hiểu dạng 2 làm như thế nào thì có thể reply tại đây, tớ sẽ reply lại lúc nào có thể . Ví dụ chúng ta có 1 chuỗi json như sau, chuỗi này áp dụng với dạng 1 : string json = @"{ 'channel': { 'title': 'James Newton-King', 'link': 'http://james.newtonking.com', 'description': 'James Newton-King\'s blog.', 'item': [ { 'title': 'Json.NET 1.3 + New license + Now on CodePlex', 'description': 'Announcing the release of Json.NET 1.3, the MIT license and the source on CodePlex', 'link': 'http://james.newtonking.com/projects/json-net.aspx', 'categories': [ 'Json.NET', 'CodePlex' ] }, { 'title': 'LINQ to JSON beta', 'description': 'Announcing LINQ to JSON', 'link': 'http://james.newtonking.com/projects/json-net.aspx', 'categories': [ 'Json.NET', 'LINQ' ] } ] } }"; JObject rss = JObject.Parse(json); Bây giờ làm sao để lấy được các giá trị qua các key nhỉ ??? Đây đơn giản vl Ví dụ muốn lấy giá trị James New-King của title trong channel ?? ta code như sau : string rssTitle = (string)rss["channel"]["title"]; // => kết quả trả về rssTitle là : James Newton-King Còn muốn lấy giá trị Json.Net 1.3 + New license + Now on CodePlex thì làm như nào ? ( chú ý ở đây cái item nó là một mảng nên sau item sẽ là phần tử đầu tiên trong mảng [0]) string itemTitle = (string)rss["channel"]["item"][0]["title"]; // kết quả trả về => Json.NET 1.3 + New license + Now on CodePlex hoặc một cách khác, đó là trả về 1 mảng json array trước sau đó mới liệt kê dữ liệu JArray categoriesText = (JArray)rss["channel"]["item"]; MessageBox.Show((string)categoriesText[0]["title"]); // Giá trị trả về cũng là đoạn text như trên ============================================================================================================================ Oke tạm thế đã :") căn bản lả chỉ xài cái đó thôi, còn nếu phức hợp hơn thì các bạn reply tại đây nhé, mình trả lời lại bên dưới. Mẹo : [Hidden Content]
  4. Chào các bạn, hiện tại thị trường tools về facebook khá là đau đầu do con AI dở hơi của facebook liên tục cho ăn checkpoint và die hàng loạt clone :v kể cả cuộc chiến Ad Breaks dính lứu tới Việt Nam đều có phần hãm . Thế nên Mỵ sẽ chuyển qua request một số trang khác thử sức xem như thế nào :") Ở topic này mỵ và mọi người sẽ chia sẻ code về request shopee.vn nhé. ================================================================== Code if-none-match- : ================================================================== Update code (01/03/2020) : Hướng dẫn request thanh toán cho shopee (checkout for shopee) ================================================================== Code : đăng nhập shopee.vn [Hidden Content] Hàm trên là khởi nguồn của mọi việc, đăng nhập xong, lấy được cookie thì mình làm gì tiếp mới làm được Chú ý : các request sau này các bạn nhớ addheader đầy đủ nhé :). Sau khi login bạn mới có thể sử dụng code sau nhé. Code add địa chỉ của shop nhé :[Hidden Content] Chia sẻ code đăng ký shopee :v mỵ mới làm 1/2 còn 1/2 nữa..hoàn thành sau :D .. [Hidden Content] API tìm kiếm sản phẩm :v Sau khi đăng nhập, request GET với link này là có kết qủa nhé string Keyword = "Bao cao su"; string SoLuongTimKiem = "50"; string LinkTK = "https://shopee.vn/api/v2/search_items/?by=relevancy&keyword="+Keyword+"&limit="+SoLuongTimKiem+"&newest=0&order=desc&page_type=search" * Update code 01/05/2020 : Update code đẩy sản phẩm Code đẩy sản phẩm cám ơn bạn @songhanpoo cho mượn nick để test code : string ID_San_Pham = "7330304651"; // bạn tự thay id sản phẩm của bạn string SPC_CDS = "1"; // bạn tự thay SPC_CDS của bạn HttpRequest request = new HttpRequest() { UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36", Cookies = new CookieStorage(), }; ....Chạy code đăng nhập......Đăng nhập xong chạy tiếp code dưới request.Cookies.Add(new System.Net.Cookie("SPC_CDS", SPC_CDS, "/", "shopee.vn")); string DataPost = @"{""id"":"+ ID_San_Pham + @"}"; request.Referer = "https://banhang.shopee.vn/portal/product/list/all"; HttpResponse response = request.Post("https://banhang.shopee.vn/api/v3/product/boost_product/?version=3.1.0&SPC_CDS="+ SPC_CDS + "&SPC_CDS_VER=2", DataPost, "application/json;charset=UTF-8"); string KetQua = response.ToString(); * Update code 07/05/2020 : Lấy danh sách tin nhắn chưa đọc từ chat của shopee . Code của bạn @Đoàn Minh Tâm
  5. Chắc các bạn ở đây sẽ có người có những chiếc laptop "xịn" hỗ trợ độ phân giải Full HD, 2k, với độ phân giải đó mà nhét vào màn hình 15-17 ich thì thực sự kinh khủng vì thứ gì cũng trở lên "bé tí", và windows nó đề nghị mình chạy scale 125 - 150% tùy loại, như màn hình của mình chẳng hạn Điều đó thực sự khó chịu khi mình thiết kế giao diện hiện trên Visual studio "đẹp như tiên" mà khi chạy lên thì "like sịt", khoảng cách các input to tổ bố luôn, cái gì cũng bị kéo dãn mờ tịt, thật kinh khủng ! Để giải quyết vấn đề này, bạn hãy làm theo mình nhé. 1. Trong file Program.cs, bạn sửa thành thế này: static class Program { // Sử dụng WinAPI [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern bool SetProcessDPIAware(); [STAThread] static void Main() { SetProcessDPIAware(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } } 2. Tiếp theo, mở design của form cần thiết kế lên AutoScaleMode bạn chọn DPI nhé OK, đơn giản vậy thôi, thử chạy chương trình lên, nó sẽ giống hệt những gì bạn design, thật tuyệt vời ^^!
  6. Hi các bạn, bữa nay mình có chút việc liên quan đến hình ảnh, nên có làm ra cái tools nhỏ này để resize lại các bức ảnh quá khổ quá lớn, trong khi các bạn lại cần thumbail chẳng hạn :D công cụ tiện lợi, nhanh, nhẹ, giảm theo kích thước tự đề ra. (Phần điều chỉnh các bạn phải đặt kích thước điều chỉnh ở 1 trong 2 ô nhé, đặt ô chiều dài thì nó giảm chiều dài xuống, đặt ô chiều rộng thì nó giảm chiều rộng xuống, đặt 1 chiều thì chiều còn lại tự co duỗi theo kích thước ảnh) . Phóng to cũng được nhưng chắc bị nhòe =)) vì ảnh gốc nó bé thế thôi mà to hơn sao nét được. Link tải (.exe) GG drive : [Hidden Content] Link sources : inbox tớ nha ! Chúc các bạn một ngày vui vẻ.
  7. Ngày 24/03/2021 : Update text to speech FPT do link api thay đổi, thêm nhiều giọng nói, thêm tốc độ đọc, hiển thị số ký tự cần nói. - Hiện nay việc tạo ra file audio trên FPT lúc nhanh lúc chậm, nên tớ để tick chọn tải audio, nếu để chọn tải thì tools sẽ đợi đến khi link audio có sẽ tải về, còn nếu ko tích chọn thì sẽ hiện ra link async file audio của FPT (lúc mới sẽ không tải được vì chưa ra file :D) *Chú ý chỉ nói được tiếng việt =))) sản phẩm của người việt mà lỵ Link tải riêng tools FPT : [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Chào các bạn, lâu rồi tớ ngâm cứu không được, hôm nay đẹp trời chạy code lại được, lý do thì phải hỏi chúa mới biết được :( . Text to Speech một tools của teamcodedao.com dựa trên sản phẩm API của FPT và Microsoft. * Với tab FPT : hiện tại mới chỉ có chức năng đọc tiếng việt bằng 4 giọng nói và điều chỉnh tốc độ độc * Với tab Microsoft : do đọc offline nên việc đọc được ngôn ngữ nào đều dựa vào máy tính của các bạn cài ngôn ngữ gì thôi :) và MS có hỗ trợ ngôn ngữ đó không, gói ngôn ngữ VN chắc chắn là chưa có rồi, các bạn khỏi tìm mất công * Với tab Goolge : nghe, nói, đọc, dịch hoàn toàn free và ổn định như google ^.^ … Bản free nên tớ để như vậy :P .. hihi... mấy hôm nữa làm bản plus sau Link Google Drive File exe : https://drive.google.com/open?id=1i2oSTEEGJ43v2dq6k6bEId09NfYg8wNl Sources : [Hidden Content]
  8. Xin chào các bạn. Hôm nay mình giới thiệu tới các bạn thư viện xNet do ông thần người Nga nào đó viết :") . Trước hết ta hiểu nôm na việc sử dụng thư viện xNet là dùng để giả lập request từ người dùng lên sever qua các method : GET, POST, PUT, DELETE. Ở bài viết này, mình sử dụng Visual studio 2017 pro và xNet version 3.3.0 (Link download thư viện xNet chính chủ) hoặc tải trực tiếp thư viện dll tại đây : Để bắt đầu với thư viện xNet, các bạn thêm thư viện cho code bằng cách : using xNet; Chú ý : Các request gửi đi nên thêm vào User Agent nhé. Ví dụ thứ 1 về gửi request GET tới trang bất kỳ để lấy về mã nguồn HTML của trang đó : để bắt đầu gửi 1 request ta sử dụng Httprequest chúng ta có thể set các giá trị mặc định cần thiết hoặc không cần cho request ví dụ như : header, watting time, address direct.... Ví dụ mẫu : using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; string content = request.Get("Địa chỉ web").ToString(); } Ví dụ đơn giản về gửi 1 request tới trang web và lấy dữ liệu html của trang đó về, ta sử phương thức GET: using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; string content = request.Get("https://teamcodedao.com/forum/").ToString(); } Ví dụ thứ 2 về gửi 1 request POST tới trang web (thường dùng để đăng nhập, đăng bài, post ảnh..vv..v) : Cách 1 : using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; MultipartContent Data = new MultipartContent() { {new StringContent("Admin"),"username" }, {new StringContent("123456"),"password" } }; string content = request.Post("https://teamcodedao.com/forum/",DataToSend).ToString(); } Cách 2 : using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; request.AddParam("username","Admin").AddParam("password","123456"); string content = request.Post("https://teamcodedao.com/forum/").ToString(); } Cách 3 : using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; var reqParams = new RequestParams(); reqParams["username"] = "Admin"; reqParams["password"] = "123456"; string content = request.Post("https://teamcodedao.com/forum/",reqParams).ToString(); } Cách 4 : using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; request .AddField("username", "Admin") .AddField("password", "123456") ; string content = request.Post("https://teamcodedao.com/forum/").ToString(); } Cách 5 : using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; string DataPost = "key1=value1&key2=value2&key3=value3"; string Content_Type = "application/x-www-form-urlencoded"; // Tùy yêu cầu content type mà bạn thay đổi nhé string content = request.Post("https://teamcodedao.com/forum/",DataToSend,Content_Type).ToString(); } Ví dụ thứ 3 về gửi request kèm Cookies : thường thì sau khi login thành công 1 trang web, sever sẽ trả về cho chúng ta một thứ để biết đấy là chúng ta, cái thứ đó gọi là cookies. Để lấy cookies sau khi POST login trang web nào đó thành công ta sử dụng mẫu code như sau : * Trước hết là bạn post đăng nhập, và lưu lại cookie để có sau này xài. using (var request = new HttpRequest()) { request.UserAgent = "MeoMup"; MultipartContent Data = new MultipartContent() { {new StringContent("Admin"),"username" }, {new StringContent("123456"),"password" }, }; HttpResponse response = request.Post("https://meomup.000webhostapp.com/forum",DataToSend); string content = response .ToString(); string cookieLogin = response.Cookies.ToString(); } * Giờ đến đoạn request cùng với giá trị cookie : Đó là bước lưu lại cookies sau khi đăng nhập thành công, cookies lưu về có dạng name1=value1,name2=value2.... Lần tới muốn request lại ta chỉ việc nạp cookie vào như sau : HttpRequest request = new HttpRequest(); request.UserAgent = "MeoMup"; request.Cookies = new CookieDictionary() { {"name1","value1"}, {"name2","value2"} } // ở đây ta có bao nhiêu name, value thì ta nạp đủ bấy nhiêu vào nhé. Giờ ta chỉ viêc request tới trang chủ thôi string htmlContent = request.get("trang chủ").ToString(); Ví dụ về thay đổi phương thức request trong xNet (xnet request method) : ngoài 2 phương thức thông thường là GET và POST, chúng ta còn có các method khác như PUT, DELETE , chúng ta thay đổi method như sau : HttpRequest request = new HttpRequest() { UserAgent = "MeoMup", Cookies = new CookieDictionary(), }; string DataPost = ""; HttpContent Data2send = new StringContent(DataPost); HttpResponse response = request.Raw(HttpMethod.PUT, "https://www.teamcodedao.com", Data2send); // tương tự với method khác MessageBox.Show(response.ToString()); request.Dispose(); Cơ bản là thế :") . Trong khi request các bạn có thể còn gặp nhiều trường hợp hoặc vấn đề khác phát sinh, các bạn có thể reply tại đây mình biết thì sẽ giải thích cho các bạn . Good Luck !!!
  9. Chào mọi người ạ, Hiện tại em đang muốn xoá và di chuyển một file vào trong thư mục C:\Program File(86)\ThuMuc Em đang sử dụng System.IO để thao tác nhưng bị báo không có quyền truy cập. Em đã thử chạy VS bằng quyền admin, build ra file exe rồi chạy file exe với quyền admin. Nhưng đều không được, VS thì báo lỗi không có quyền truy cập (System.UnauthorizedAccessException: 'Access to the path 'C:\Program Files (x86)\ThuMuc\file.exe' is denied.'). Còn file exe thì nó tự tắt luôn ạ using System.IO; string pathDownload = Path.Combine(Environment.CurrentDirectory, @"file.exe"); string path = @"C:\Program Files (x86)\ThuMuc\file.exe"; File.Delete(path); // Em muốn xoá file file.exe trước File.Move(pathDownload, path); // Rồi di chuyển file file.exe khác vào thay thế file exe cũ kia Em đã thử đủ cách rồi nhưng mãi không tìm ra cách ạ...
  10. Tài liệu C# tiếng Việt tốt nhất cho người mới bắt đầu https://drive.google.com/file/d/112_0davc-vsstBOjkPBs2EDQAcG0oWpd/view
  11. Em chào mọi người ạ, hiện tại em đang sử dụng httpRequest để lấy dữ liệu từ file json, các thông tin khác đều chèn vào DataGridView (em xin phép được viết tắt DGV) bình thường Nhưng đến khi cột ảnh (em đã chỉnh định dạng của cột này thành Picture rồi ạ) thì lại bị báo lỗi như hình ạ Còn đây là đoạn code mà em sử dụng ạ: Dữ liệu Json có dạng như sau ạ : JSON FILE Em có dùng thư viện NewtonSoft để đọc ra các trường như id, name các thứ đều ổn ạ. Mọi người ai từng làm qua cái này rồi có thể giúp em với được không ạ? Em cảm ơn mọi người ạ
  12. Qusdrok

    http request bypass recaptcha

    Hi các bác, em vừa mới học http request ạ, em xài http client, em đã làm được đăng nhập 1 vài trang bình thường không dính captcha ạ, hiện tại em đang làm 1 trang này nó dính tới captcha, em kg biết làm sao để lấy đc "captcha" để truyền vào request của nó để pass đc vụ đăng nhập ạ ? em cảm ơn các bác nhiều đây là link của trang web em đang làm :v https://wefinex.net/ * em kg biết cách up ảnh vào bài viết ạ
  13. Chào mọi người ạ, em đang làm việc với Selenium, nhưng hiện tại em đang bị vướng mắc ở khúc chia tỉ lệ màn hình rồi đưa browser vào, ở đây em sử dụng Chrome ạ. Em muốn hỏi có cách nào để chia được Chrome ra thành các cửa sổ nhỏ như này và tự vừa với màn hình không ạ? Vd chọn là chia 3 thì nó sẽ như hình, còn chia 6 thì sẽ nhỏ hơn và chia thành 6 Chrome ấy ạ Em cảm ơn mọi người ạ!
  14. Xin chào các bạn :") . Hôm nay mình rảnh rối, sẽ hướng dẫn các bạn request Facebook API rất dễ dạng, bởi vì cái này nó viết cho người dùng dùng mà :") . Chuẩn bị đồ nghề nha, tớ xài ngôn ngữ C Sharp, Idle visual studio 2017 , request bằng thư viện xNet. Để biết cách request bằng thư viện xNet, mời các bạn xem bài Tổng quan Graph API : là cách chính để tải dữ liệu vào hoặc lấy dữ liệu ra khỏi nền tảng Facebook. Đó là API dựa trên HTTP cấp thấp mà ứng dụng có thể sử dụng để truy vấn dữ liệu, đăng tin mới, quản lý quảng cáo, tải ảnh lên và thực hiện nhiều tác vụ khác theo lập trình. blah..blav.. lý thuyết kệ mọe nó nhé, thực hành tí là biết tuốt :") . I. Các điều kiện cần có để có thể request được : - Link graph của facebook : https://graph.facebook.com/v3.1/ < version của facebook thay đổi theo tùng thời kỳ. - Các nút graph facebook, nút là cái mẹ gì thế :( .. hiểu nôm na thì nó là cái vật chủ mình muốn lấy, ví dụ như là : user id, post id, group id, comment id v.vvv...v. Cái này có thể có, có thể không có cũng được nha. - Các cạnh của graph facebook, cạnh là clgt :/ .. hiểu nôm na thì nó là cái thử mở rộng của vật chủ như album ảnh v..v..v, ví dụ : userid/photo, userid/comments v..v..vv - Các trường của graph facebook, trường là dài à hay là ngắn :( ..đek biết giải thích thế nào, nhưng đại loại là thông tin mà bạn cần lấy của vật chủ , ví dụ muốn lấy id và tên của userid thì ta có mẫu : userid?fields=id,name. id,name ở đây là các trường nhé. - Cái cuối cùng và quan trọng nhất là access token, cái này lấy ở đâu nhể ??? + Một là vào đây : + Hai là làm theo bài này : Hướng dẫn lấy access token Facebook dài hạn gần full quyền II. Bắt đầu request : - Để request, ta có mẫu link như sau, (chú ý mẫu này cần phải nhớ nha) : - Mẫu 1 : Giờ ta vào thẳng ví dụ mẫu nhé. Muốn request thông tin của 1 ID nào đó ta có như sau : - Sử dụng method GET với link trên trong CSharp : HttpRequest Request = new HttpRequest(); Request.UserAgent = "MeoMup"; HttpResponse Response = Request.Get("https://graph.facebook.com/v3.1/100004347870643?fields=id,name&access_token=token"); string KetQua = Response.ToString(); - Dữ liệu KetQua trả về thu được như sau : { "id": "548500295304895", "name": "Đỗ Thành Chung" } - Như vậy giờ ta chỉ cần Regex thông tin ta cần là được. - Mẫu 2 : Ta có mẫu ví dụ thứ 2 về trường hợp có thêm các cạnh graph facebook nhé. Ví dụ request feed của 1 id nào đó, ta request như sau : - Tương tự sử dụng method GET với link trên trong CSharp : HttpRequest Request = new HttpRequest(); Request.UserAgent = "MeoMup"; HttpResponse Response = Request.Get("https://graph.facebook.com/v3.1/100004347870643/feed?fields=id,message&access_token=token"); string KetQua = Response.ToString(); - Dữ liệu KetQua trả về thu được như sau : { "data": [ { "id": "548500295304895_1073408016147451", "message": ":(( ..." }, { "id": "548500295304895_1030728783748708", "message": "¿" }, { "id": "548500295304895_1030554090432844", "message": "kiếm tiền ví momo" }, { "id": "548500295304895_1025392767615643", "message": "ok" }, { "id": "548500295304895_1000296853458568", "message": "vxvxvxvxvxvxc" }, { "id": "548500295304895_976244709197116", "message": "k,jk,jk,j,j" }, { "id": "548500295304895_971248569696730", "message": "upgrade facebook version 3.0" }, { "id": "548500295304895_965737520247835" }, { "id": "548500295304895_965744460247141" }, { "id": "548500295304895_959761967512057", "message": "adfasfasd afdfaf ââafaf :v" }, { "id": "548500295304895_953540951467492", "message": "???????" } ], "paging":{"previous": "link","next": "link"}} - Và giờ ta chỉ cần Regex thông tin ta cần là được. - Mẫu 3 : Ví dụ, ta muốn viết 1 bài trên tưởng nhà của 1 user id nào đó, dựa trên mẫu link trên ta có : - Theo như hướng dẫn của Graph Facebook, ta sử dụng method POST với Datapost là message và access token , ta được như sau : HttpRequest Rq = new HttpRequest(); Rq.UserAgent = "MeoMup"; string DataPost = "message=Xin chào&access_token=token"; HttpResponse Rs = Rq.Post("Link xem trong Header", DataPost, "content type xem trong header"); string KetQua = Rs.ToString(); - Biến Ketqua sẽ có giá trị trả về là Postid của bài viết vừa đăng :") trông nó như thế này : {"id":"1000004347870643_12345678910111213"} - Đại loại thế :") . Còn làm sao tớ biết các cạnh, các nút, các trường thì nó nằm ở trong hướng dẫn Graph Facebook Document này hết nhóe, các thím chịu khó tìm hiểu, vọc tiếng anh cùng với mẫu của tớ thì 1 chút là ra. Nếu có gì không hiểu, hay vẫn chưa tìm ra thì comment bên dưới, tớ hỗ trợ hoặc tìm giúp cho nha. Đây là link document của Facebook nhóe : Thân ái, Good Luck !
  15. Chào các bạn ! Hôm nay mình sẽ hướng dẫn các bạn thực hành request Post đăng nhập vào forum xenforo và lấy cookie để cho các thao tác get Post sau này. Ở bài viết này mình sẽ sử dụng trang http://autoitvn.com/ , sử dụng visual studio code ngôn ngữ csharp và thư viện xNet để làm ví dụ nhé. Bước 1 : Các bạn vào trang http://autoitvn.com/ và nhấn F12 mở debug của trình duyệt lên xem. Bước 2 : Các bạn đăng nhập bình thường vào trang và mở lại tab Debug lên xem sẽ thấy rất nhiều request GET, POST. Ta chọn cái nào đây, do mình làm request POST để đăng nhập nên mình sẽ tìm các method POST, nhấn tạm vào cái link nào đó ở bên trái, và chọn ô Body ở bên phải, click chọn RequestBody để xem thông tin. Ta sẽ dừng lại ở link nào có đủ các yếu tố sau : Method = POST, link có RequestBody có chứa tài khoản và mật khẩu của bạn. Ta sẽ được như hình sau Bước 3 : Các bạn thu thập các param xftoken,cookie_check,ogin,password,redirect,register để xây dựng data gửi đi. mỗi param là 1 cặp có mẫu là name=value, chứng được nối với nhau bằng dấu "&", theo như request body kia, chứng ta sẽ xây dựng được DataPost như sau : xftoken=&cookie_check=1&login=Nick&password=Pass&redirect=%2F&register=0 Bước 4 : Code mẫu sẽ như sau : HttpRequest request = new HttpRequest(); request.UserAgent = "MeoMup"; // << các bạn phải lấy user agent đúng với trình duyệt các bạn đang dùng nhé. request.Cookies = new CookieDictionary(); // << do trang web có sử dụng đến cookie nên ta thêm dòng này vào HttpResponse response = request.Get("http://autoitvn.com/"); // << chứng ta phải request lần đầu để lấy session cookie response.None(); string DataPost = "xftoken=&cookie_check=1&login=Nick&password=Pass&redirect=%2F&register=0"; response = request.Post("http://autoitvn.com/login/login", Datapost , "application/x-www-form-urlencoded"); string KetQua = response.ToString(); File.WriteAllText("ketqua.html", KetQua); Bước 5 : Nếu các bạn nào chưa hiểu tại sao method POST được viết như thế thì hãy xem lại bài : Hướng dẫn cơ bản về thư viện xNet trong CSharp. Biến Ketqua sẽ chứa mã nguồn HTML của trang autoitvn.com đã login của bạn :") không tin bạn hãy mở trang ketqua.html vừa save lại ra mà xem sẽ thấy trang autoitvn offline với tài khoản của bạn. Trang của tớ có hơi khác chút do sử dụng mạng mobile :"). nhưng cũng giống nhau thôi, là trang đã login với tài khoản của mình. Bước 6 : Đến đây thì cũng coi như gần xong rồi, nhưng làm sao để lần sau không phải đăng nhập nữa mà vẫn ở trang login này => đó là ta phải lưu lại cookies để chạy mỗi lần sau.Code rất dễ dạng như sau : string CookieXenforo = response.Cookies.ToString(); Các bạn lưu data của CookieXenforo này lại, cookie này có dạng là name1=value1,name2=value2.... Lần tới muốn request lại ta chỉ việc nạp cookie vào như sau : HttpRequest request = new HttpRequest(); request.UserAgent = "MeoMup"; request.Cookies = new CookieDictionary() { {"name1","value1"}, {"name2","value2"} } // ở đây ta có bao nhiêu name, value thì ta nạp đủ bấy nhiêu vào nhé. Giờ ta chỉ viêc request tới trang chủ thôi HttpResponse response = request.Get("http://autoitvn.com/"); string KetQua = response.ToString(); File.WriteAllText("ketqua.html", KetQua); Oke men, thế là ta cũng được mã nguồn của trang chủ autoitvn.com với tài khoản đã đăng nhập rồi nhé. Chúc các bạn thành công.
  16. Xin chào các bạn, hôm nay mình xin hướng dẫn các bạn về cách thức đăng nhập vào sql server và sử dụng sql server như thế nào nhé. Các thức này khác là cơ bản, nhưng mình vẫn thấy nhiều bạn hỏi, không biết tại sao không login được, hay báo lỗi, và các sử dụng để đọc, ghi, sửa, xoá bảng ghi sql server bằng ngôn ngữ C#. Phần 1 : Các bạn nên cài SQL SERVER 2017 mới nhất nhé . Link tải và cài đặt theo mặc định, không cần phải thay đổi gì cả. Link download từ trang chủ, các bạn tải bản Express về nhé, bản này miễn phí và nhẹ dùng để làm thực tập và đồ án nhỏ thì được. Phần 2 : Sau khi tải xong và cài đặt thành công, các bạn tải thêm phần mềm SQL SERVER Management Studio (SSMS) để quản lý nhé. Link cũng tại trang chủ đây Phần 3 : Sau khi có đồ nghề xong, cùng với Visual Studio 2017 và thư viện System.Data.SqlClient có sẵn đi kèm nhé, chúng ta bắt tay vào việc kết nối nào. À iêm quên mất, các thím phải mở tài khoản SA ra để có tài khoản và mật khẩu đăng nhập nhoé, đây là hướng dẫn mở tài khoản SA. Trước hết, đây là tài liệu chính thống của SQL SERVER, các bạn có thể đọc tham khảo qua trước, link ở đây : Sau đây chúng ta bắt tay vào code, ở đây các tham số cần là tên máy : TeamCodeDao, tên database : databaseTCD, tài khoản mặc định là : sa, và mật khẩu là : 123456 nhé các bạn, và đây là mẫu connection SQL SERVER : try { string ConnectionString = @"Data Source=TeamCodeDao;Initial Catalog=databaseTCD; Integrated Security=True"; SqlConnection KetNoi = new SqlConnection(ConnectionString) MessageBox.Show("Kết nối thành công"); KetNoi.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Kết nối không thành công"); } Hiện tại tớ mới biết khai báo 5 cách sau để kết nối đến SQL SERVER , các cách đều giống nhau, chỉ khác nhau ở phần chuỗi khai báo connect string thôi nhé : Cách 1 : Như mẫu trên Cách 2 : try { string ConnectionString = @"Data Source=TeamCodeDao;Database=databaseTCD; Integrated Security=True"; SqlConnection KetNoi = new SqlConnection(ConnectionString) MessageBox.Show("Kết nối thành công"); KetNoi.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Kết nối không thành công"); } Cách 3 : try { string ConnectionString = @"Data Source=TeamCodeDao;Database=databaseTCD; Integrated Security=SSPI"; SqlConnection KetNoi = new SqlConnection(ConnectionString) MessageBox.Show("Kết nối thành công"); KetNoi.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Kết nối không thành công"); } Cách 4 : try { string ConnectionString = @"Data Source=TeamCodeDao;Database=databaseTCD; User ID=sa;Password=123456"; SqlConnection KetNoi = new SqlConnection(ConnectionString) MessageBox.Show("Kết nối thành công"); KetNoi.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Kết nối không thành công"); } Cách 5 : try { string ConnectionString = @"Data Source=TeamCodeDao;Database=databaseTCD; User ID=sa;pwd=123456"; SqlConnection KetNoi = new SqlConnection(ConnectionString) MessageBox.Show("Kết nối thành công"); KetNoi.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Kết nối không thành công"); }
  17. Code c# sử dụng thư viện selenium nhoé các bạn. ChromeDriverService Cds = ChromeDriverService.CreateDefaultService(); Cds.HideCommandPromptWindow = true; IWebDriver MeoChrome = new ChromeDriver(Cds) { Url = "https://10fastfingers.com/typing-test/vietnamese?fbclid=IwAR1DUxnhv_KkICQ8kvT7EgxG-as2Z7iLSOJgGYkWLFPORJ7S_URTj67pgQs" }; string KetQua = MeoChrome.PageSource; string FullText = Regex.Match(KetQua, "(?s)<div id=\"reload-box\" style=\"display: block;\">(.*?)</div></div>").Value; FullText = Regex.Replace(FullText, "<.*?>","").Trim(); WebDriverWait wait = new WebDriverWait(MeoChrome, TimeSpan.FromSeconds(10)); wait.Until(d => d.FindElement(By.Id("inputfield"))); foreach (string item in FullText.Split(' ')) { MeoChrome.FindElement(By.Id("inputfield")).SendKeys(item); Thread.Sleep(300); MeoChrome.FindElement(By.Id("inputfield")).SendKeys(OpenQA.Selenium.Keys.Space); string SoGiay = MeoChrome.FindElement(By.Id("timer")).Text; if (SoGiay == "0:00") { break; } } Bạn nào chưa biết có thể tìm hiểu bài hướng dẫn về selenium c# ở đây. Trên đây là đoạn code mình viết ra, nếu có đoạn nào không hiểu thì các bạn post lên đây, mình sẽ giải thích nhé.
×
×
  • Create New...