Jump to content
Các bạn đi qua đi lại :") nếu có rảnh giúp mình click vào quảng cáo ở góc phải hoặc dưới cùng hoặc trong bài viết nhé. Cám ơn nhìu ^^. ×

Search the Community

Showing results for tags 'guide'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Assembly
    • Announcements
    • Meeting Room
    • Discipline Room
  • Programs Language
    • C Sharp
    • C/C++
    • AutoIt
    • AutoHotKey
    • Python
    • HTML/Javascipt
  • Thuê code - Nhận code
    • Sales corner
    • Người thuê code
    • Người nhận code
    • Bóc phốt - Cảnh báo lừa đảo
  • Computer - Internet
    • Hot News
    • Internet Trick
    • Games World
    • Windows
    • Software
    • MMO
  • Recycle
    • Recycle

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 5 results

  1. 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.
  2. Link khóa học Python cơ bản từ không biết gì đến siêu nhân :)). Nguồn sưu tầm nên không nhớ :") . Các bác biết của ai thì có thể reply mình thêm vào. Link : [Hidden Content]
  3. Code sử dụng UDF _HttpRequest. Nếu ai chưa biết về UDF này thì đọc bài viết tại đây: Mình từng có một bài viết hướng dẫn cách login Garena bằng cách giải thuật thuần tuý, nhìn khá là rối rắm, nội dung tại: http://autoitvn.com/threads/thuat-toan-garena-huong-dan-cach-login-va-phuong-thuc-ma-hoa-mat-khau-cua-no-voi-_httprequest.900/ --------------------------------------------------------------------------------- Hôm nay mình sẽ đăng code sử dụng hàm _JS_Execute để giải quyết công đoạn mã hoá mật khẩu khiến nó trở nên đơn giản hơn rất nhiều. #include <_HttpRequest.au3> $username = '' $password = '' $TimeStamp = _GetTimeStamp() $PreLogin = _HttpRequest(2, 'https://sso.garena.com/api/prelogin?account=' & $username & '&format=json&id=' & $TimeStamp & '&app_id=10000') If StringInStr($PreLogin, 'error_require_captcha') Then ; Nếu bắt điền captcha thì: $UUID = _JS_Execute('', "function uuid() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);return v.toString(16);});}; var uuid=uuid()", 'uuid') $sCaptcha = _HttpRequest_SimpleCaptchaGUI(_HttpRequest(2, 'https://captcha.garena.com/image?key=' & $UUID)) $PreLogin = _HttpRequest(2, 'https://sso.garena.com/api/prelogin?account=' & $username & '&format=json&id=' & $TimeStamp & '&app_id=10000&captcha_key=' & $UUID & '&captcha=' & $sCaptcha) EndIf $aV = StringRegExp($PreLogin, '"v[12]": "([^"]+)"', 3) $CodeJS = _ "var password = '" & $password & "';" & _ "var passwordMd5 = CryptoJS.MD5(password);" & _ "var passwordKey = CryptoJS.SHA256(CryptoJS.SHA256(passwordMd5 + '" & $aV[0] & "') + '" & $aV[1] & "');" & _ "var encryptedPassword = CryptoJS.AES.encrypt(passwordMd5, passwordKey, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.NoPadding});" & _ "encryptedPassword = CryptoJS.enc.Base64.parse(encryptedPassword.toString()).toString(CryptoJS.enc.Hex);" $encryptedPassword = _JS_Execute('https://sso.garena.com/js/crypto.js?v=0.60', $CodeJS, 'encryptedPassword') $sLogin = _HttpRequest(2, 'https://sso.garena.com/api/login?account=' & $username & '&password=' & $encryptedPassword & '&redirect_uri=https://www.garena.vn/&format=json&id=1472983484321&app_id=10000') MsgBox(4096, 'Login data', $sLogin) Have fun :v
  4. * Chú ý: WinHttp trên WinXP không còn support hầu như các trang Https nên UDF chạy tốt nhất từ Win7 trở lên. A/ LỜI NÓI ĐẦU - UDF dựa trên nền tảng của WinHttp.dll có sẵn của Window nên còn hạn chế rất nhiều mặt như tương tác sâu và session, không xài SOCKS để cài đặt proxy được... Còn lại thì nói chung xài rất ổn. - Mình không phải dân lập trình, chỉ là mê AutoIt, tập tành code kiết này nọ nên có thể kiến thức, lý thuyết, cách gọi …trong lập trình của mình không chính xác và chuẩn lắm, mong các bạn thông cảm. - Dùng WinHttp theo mình thì đây là phương thức gửi nhận dữ liệu mạng không cần qua 1 cái Web Browser trung gian. Ví dụ bình thường bạn muốn tải nhạc, bạn vào Chrome, vào ZingMp3, lựa bài muốn tải, bấm Tải về. Còn khi dùng WinHttp, đơn giản, bạn code 1 chương trình gửi 1 thông tin đến ZingMp3 rằng bạn muốn tải bài đó và nhận dữ liệu gửi về, không cần qua một chương trình nào khác nữa.- Đây là bài viết dành cho những ai đang mới bắt đầu tìm hiểu về WinHttp, mình thì chỉ nắm những cái gọi là cơ bản thôi, nói chung là vừa đủ xài để ra cái kết quả cuối cùng hay nói nôm na là thực hành nhiều để ra cái kinh nghiệm, chứ về lý thuyết, trả lời các câu hỏi tại sao, vì sao phải làm như vậy thì…mình không biết. B/ CÁC YÊU CẦU ĐẦU TIÊN1- Trong bài hướng dẫn, toàn bộ thông tin gửi nhận request mình dùng addon Live HTTP Headers trên Firefox để xem. Nếu chưa cài bạn có thể vào đây tải về: (Lưu ý là addon này chỉ chạy trên Firefox bản 57 trở về trước, bản mới sau này không cài được). Nếu đã quen thuộc với request rồi bạn có thể sử dụng chức năng Develop có sẵn của trình duyệt (bấm F12 trên bàn phím, sau đó chọn tab Network) để xem request cho tiện hoặc các phần mềm như HttpAnalysis, Fiddler... https://addons.mozilla.org/vi/firefox/addon/live-http-headers/ Sau khi cài xong ta vào Tab Config, sau đó tích chọn Exclude URLS with regexp và paste vào ô kế bên nội dung sau: Mã (Text): ^https://safebrowsing-cache.google.com|^https://scontent-hk|edge-chat.facebook.com|facebook.com/feed/badge/|facebook.com/a/bz$|^https://pixel.facebook.com|.gif$|.jpg$|.ico$|.css$|.js$|.png$|googleads|eclick.vn|doubleclick.net|ants.vn|\.css\?v=|adsplay|google-analytics.com Mục đích của việc trên là để lọc bớt những request thừa, bởi khi chạy Live HTTP Headers sẽ có rất nhiều request hiển thị và rất rối mắt nếu không quen. 2- Tải về UDF _HttpRequest.au3 + Tập tin trợ giúp _HttpRequest Help.chm: Giờ đây tất cả hướng dẫn, mẹo vặt, code... mình đều đã tổng hợp toàn bộ trong file Help này. Hy vọng nó sẽ giúp ích thật nhiều cho các bạn trong việc học về request bằng WinHttp/_HttpRequest Link tải (14.0.6 - 23/07/2019): https://drive.google.com/open?id=1AS2mWTKMF5btxyULhh8JIGqD_9yxshif Sửa lỗi mở file Help mà chỉ ra trang trắng không có nội dung: Nhấp phải vào file _HttpRequest_Help.chm, chọn Properties, sau đó tích chọn Unblock, cụ thể sẽ như hình hướng dẫn bên dưới: 3- Cài CallTips cho SciTE: Việc này khá quan trọng bởi vì số lượng hàm là rất nhiều, calltips sẽ giúp ích cho việc code nhanh chóng hơn và không mất nhiều thời gian để nhớ đến tên hàm. Thực hiện cài calltips như sau: Mở file _HttpRequest_Help.chm đã tải ở link trên. Vào mục Introduction. Vào mục CallTips. Làm theo hướng dẫn đã nói rất rõ trong mục CallTips vừa mở. 4- Đọc kỹ hướng dẫn về StringRegExp (tách chuỗi) bởi nó sẽ được sử dụng rất nhiều khi làm về request. Ít nhất phải nắm được căn bản của hàm StringRegExp mới có thể đọc hiểu các ví dụ và thực hành. File _HttpRequest_Help.chm đã có 2 bài viết về StringRegExp, 1 bài đơn giản là do mình viết, một bài là do lazycat (diễn đàn hocautoit.com cũ) viết. 5- Đọc thật kỹ nội dung _HttpRequest_Help.chm về hàm chính _HttpRequest và các tham số của nó điều này hết sức quan trọng vì đây là hàm chủ chốt thực hiện request và liên quan đến tất cả các hàm bổ trợ còn lại của UDF. ------------------------------------***---------------------------------------- OK, đó là 5 điều cần làm trước khi đi tiếp vào con đường request rắc rối này. File _HttpRequest_Help.chm đã bao gồm: Ví dụ mẫu trong tất cả các hướng dẫn sử dụng các hàm trong UDF. Phần Practice cung cấp những bài tập request từ cơ bản đến phức tạp hơn. Để chạy thử code mẫu, bạn có thể bấm nút Copy To Clipboard như đã thấy ở hình trên rồi paste vào SciTe là xong. Chúc các bạn học request thành công.
  5. Xin chào các bạn, topic này mình sẽ dành riêng cho các bạn post tổng hợp các tài liệu, giáo trình hướng dẫn lập trình C Sharp từ cơ bản đến nâng cao sau đó tớ sẽ list lại theo một danh sách. Các bạn có thể chia sẻ link tài liệu của các bạn lên đây nhé. Cám ơn các bạn sưu tầm và đóng góp cùng với mình. 1. Giáo trình C Sharp Link : [Hidden Content] 2. Trọn bộ 2 phần hướng dẫn cơ bản c sharp và hướng dẫn nâng cao c sharp của giảng viên Trần Duy Thanh : [Hidden Content]
×
×
  • Create New...