最近幫忙朋友搞爬蟲, 然後就遇到鬼打牆, 怎麼 post 都沒辦法正常登入, 仔細看發現忘了加上 VIEWSTATEVIEWSTATEGENERATOREVENTVALIDATION 這三個咚咚, 這沒搞過 asp.net 的人大概都不會知道有這些 XD 因為平常沒怎麼 post 表單, 大多數都是用 puppeteer 然後開 headless, 這把則是用 AngleSharp post 表單重點在於要抓 name 而非 id 另外一些看起來沒啥意義的 RememberMeUserLogin 最好也都帶進去這樣才會正確 post 過去 最後想到以前搞畜生爬蟲就被 VIEWSTATE 雷過
// 使用 HttpClientHandler 管理 Cookies var handler = new HttpClientHandler(); handler.CookieContainer = new CookieContainer();
var client = new HttpClient(handler);
// 發送 GET 請求,獲取頁面 HTML var response = await client.GetStringAsync(url);
// 解析 HTML 頁面,使用 AngleSharp var parser = new HtmlParser(); var document = await parser.ParseDocumentAsync(response);
var viewState = document.QuerySelector("input[name='__VIEWSTATE']")?.GetAttribute("value"); var viewStateGenerator = document.QuerySelector("input[name='__VIEWSTATEGENERATOR']")?.GetAttribute("value"); var eventValidation = document.QuerySelector("input[name='__EVENTVALIDATION']")?.GetAttribute("value");
public class DatabaseHelper { private IConfiguration configuration; public DatabaseHelper(IConfiguration configuration) { this.configuration = configuration; }
public DateTime MaxDate() { // 使用 MySQL 連線和 Dapper 取得最大日期 using (var dbConnection = new MySqlConnection(configuration.GetConnectionString("DefaultConnection"))) { dbConnection.Open();
// SQL 查詢語句 string query = "SELECT MAX(datetime) FROM table;";