Post data login website howkteam dùng Http Request

Lập trình Http Request với C#

5.0 (1 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 23:51 14-06-2020 29.431 lượt xem 32 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Post data login website howkteam dùng Http Request

Dẫn nhập

Chào mừng các bạn đến với khóa học LẬP TRÌNH HTTP REQUEST VỚI C#, khóa học đầu tiên trong cụm khóa học về Auto C# của Howkteam. Mục đích hướng tới là các bạn có thể làm auto bằng C# mà không cần dùng tới các ngôn ngữ như AutoIT, C++,...

Ở bài trước chúng ta đã tìm hiểu về cách GET DATA HOWKTEAM KÈM COOKIE DÙNG HTTP REQUEST. Trong bài này chúng ta sẽ tiếp tục tìm hiểu cách Post data login website howkteam dùng Http Request


Nội dung 

Nội dung bao gồm Source code & các lưu ý chính về quá trình thực hiện phần mềm. Kteam khuyến khích bạn cập nhập thêm nhiều kinh nghiệm cũng như hiểu chi tiết hơn về các kỹ thuật được đề cập trong bài học thông qua các video đính kèm.

Đừng quên Like Facebook hoặc +1 Google để ủng hộ Kteam và tác giả.

Để có đủ khả năng học hiểu các nội dung được đề cập đến trong khóa học. Bạn nên có tối thiểu kiến thức về các phần:

Ngoài ra, cũng nên trau dồi thêm kiến thức khác qua các project thực tế như:


Phần mềm sử dụng

Để việc thao tác theo hướng dẫn được tốt nhất bạn nên cài đặt các phần mềm


Project tham khảo

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using xNet;

namespace HttpRequest_Bai1_GetDataFrom_HowKteam
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Crawl
            /*
             HttpClient
             HttpWebClient
             WebClient
             HttpWebRequest
             HttpRequest
             */

            var html = GetData("https://www.howkteam.com/");
            TestData(html);
        }

        void TestData(string html)
        {
            File.WriteAllText("res.html", html);
            Process.Start("res.html");
        }
              

        private void button2_Click(object sender, EventArgs e)
        {
            string cookie = "";
            var html = GetData("https://www.howkteam.com/", null, null, cookie);
            TestData(html);
        }

        #region Kteam code
        void AddCookie(HttpRequest http, string cookie)
        {
            var temp = cookie.Split(';');
            foreach (var item in temp)
            {
                var temp2 = item.Split('=');
                if (temp2.Count() > 1)
                {
                    http.Cookies.Add(temp2[0], temp2[1]);
                }
            }
        }

        string GetData(string url, HttpRequest http = null, string userArgent = "", string cookie = null)
        {
            if (http == null)
            {
                http = new HttpRequest();
                http.Cookies = new CookieDictionary();
            }

            if (!string.IsNullOrEmpty(cookie))
            {
                AddCookie(http, cookie);
            }

            if (!string.IsNullOrEmpty(userArgent))
            {
                http.UserAgent = userArgent;
            }
            string html = http.Get(url).ToString();
            return html;
        }

        string GetLoginDataToken(string html)
        {
            string token = "";

            var res =  Regex.Matches(html, @"(?<=__RequestVerificationToken"" type=""hidden"" value="").*?(?="")", RegexOptions.Singleline);

            if (res !=null && res.Count > 0)
            {
                token = res[1].ToString();
            }

            return token;
        }

        string PostData(HttpRequest http, string url, string data = null, string contentType = null, string userArgent = "", string cookie = null)
        {
            if (http == null)
            {
                http = new HttpRequest();
                http.Cookies = new CookieDictionary();
            }

            if (!string.IsNullOrEmpty(cookie))
            {
                AddCookie(http, cookie);
            }

            if (!string.IsNullOrEmpty(userArgent))
            {
                http.UserAgent = userArgent;
            }

            string html = http.Post(url, data, contentType).ToString();
            return html;
        }
        #endregion

        private void button3_Click(object sender, EventArgs e)
        {
            HttpRequest http = new HttpRequest();
            http.Cookies = new CookieDictionary();
            string userArgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36";

            var html = GetData("https://www.howkteam.vn", http, userArgent);


            string token = GetLoginDataToken(html);

            string userName = "kteamts@gmail.com";
            string password = "Test123@";
            string data = "__RequestVerificationToken="+token+"&Email="+ WebUtility.UrlEncode(userName) + "&Password="+ WebUtility.UrlEncode(password) + "&RememberMe=true&RememberMe=false";
            html = PostData(http, "https://www.howkteam.vn/account/login?returnUrl=https%3A%2F%2Fwww.howkteam.vn%2F", data, "application/x-www-form-urlencoded; charset=UTF-8").ToString();

            html = GetData("https://www.howkteam.vn", http, userArgent);

            File.WriteAllText("res.html", html);
            Process.Start("res.html");
        }
    }
}

Form1.Designer.cs

namespace HttpRequest_Bai1_GetDataFrom_HowKteam
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.button3 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(12, 12);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "Get data";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(93, 12);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(122, 23);
            this.button2.TabIndex = 1;
            this.button2.Text = "Get data with cookie";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Click += new System.EventHandler(this.button2_Click);
            // 
            // button3
            // 
            this.button3.Location = new System.Drawing.Point(221, 12);
            this.button3.Name = "button3";
            this.button3.Size = new System.Drawing.Size(114, 23);
            this.button3.TabIndex = 2;
            this.button3.Text = "Post đăng nhập";
            this.button3.UseVisualStyleBackColor = true;
            this.button3.Click += new System.EventHandler(this.button3_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(444, 191);
            this.Controls.Add(this.button3);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button3;
    }
}


Project tải xuống

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới! 

Phần mềm & Thư viện khác


Kết

Trong bài này, chúng ta đã tìm hiểu cách Post data login website howkteam dùng Http Request

Ở bài sau, Kteam sẽ giới thiệu đến bạn cách UPLOAD FILE VỚI C# DÙNG HTTP REQUEST

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Và đừng quên “Luyện tập – Thử Thách – Không ngại khó


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Post data login website howkteam dùng Http Request dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Khóa học

Lập trình Http Request với C#

Lập trình Http Request với C#

Đánh giá

Thanghope1111 đã đánh giá 11:02 22-06-2020

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
sonhuedut đã bình luận 08:55 08-09-2022

hi anh , em đang tìm hiểu về Httprequest và Httpclient. em đang dùng để login vào 1 trang web asp.net và đang thấy dùng _viewstate trên formdata, dữ liệu này không thay đổi như token nhưng em không thể login vào khi gửi post với đúng data như vậy ạ

Tester đã bình luận 23:52 19-01-2022

19/01/2022 

Trong Post có 3 argument:

A. Address

  1. Inspect (F12)
  2. Network trên cùng
  3. Đừng chọn Fetch/XHR mà hãy chọn All
  4. Tiếp bạn chon Clear (nó nằm ngay bên phải cái nút Đỏ)
  5. Rồi bạn đăng nhập theo tài khoản mà web cung cấp:
    • User name: kteamts@gmail.com
    • Password:   Test123@
  6. Để ý đến cái khung có tiêu đề Name (ở nằm phía dưới bên trái của cái khung mà có mấy giá trị thời gian 1000ms, 2000ms,... đấy)
  7. Chọn file có dòng "login?ReturnUrl=2%F" 
  8. Nhìn sang khung bên phải, chọn Header
  9. Có 3 blocks: General, Request Header, Response Header
  10. Chọn General rồi Copy dòng Request URL cho vào Post.

B. Form Data - data trong Post

  1. Thực hiện Y NGUYÊN phần cho đến bước thứ 8
  2. Bên cạnh Header có tag Payload.
  3. Trong đó, có 2 blocks: Query Str..., Form Data
  4. Copy hết trong Form Data
  5. Paste vào Post - như trong video

C. Content Type

  1. Còn nhớ cái Header không? Chọn nó đi - Không thì coi lại phần A.
  2. Chọn block Request Header, tìm Content Type
  3. Copy phần đó và Paste vào Post - như trong video

Nửa sau của thì bạn cứ làm theo video là được.

tranquocdai.com đã bình luận 09:20 09-07-2021

Mặt dù video hướng dẫn theo cách đăng nhập cũ không giống với cách đăng nhập hiện tại, nhưng nếu nắm được giải thuật và hiểu được các bước thực hiện thì việc thay đổi code và thành công là hoàn toàn có thể. Mình đã xem video và đổi lại code theo cách đăng nhập hiện tại và đã làm được. Cám ơn admin rất nhiều.

tranquocdai.com đã bình luận 09:20 09-07-2021

Mặt dù video hướng dẫn theo cách đăng nhập cũ không giống với cách đăng nhập hiện tại, nhưng nếu nắm được giải thuật và hiểu được các bước thực hiện thì việc thay đổi code và thành công là hoàn toàn có thể. Mình đã xem video và đổi lại code theo cách đăng nhập hiện tại và đã làm được. Cám ơn admin rất nhiều.

sonchemjo101 đã bình luận 20:39 30-01-2021

Em tải code như trên,làm thử website howkteam mới nhưng giá trị token sau khi lấy không có.
Mong ace  giúp đỡ ạ

Không có video.