直接將 Basic base64(user:pass) 加入 Header,大多數路由器採用**表單登入 + Session Cookie**,不支援 HTTP Basic Auth。
username/password 到登入頁 (如 /login.cgi)。sessionid=xxx)。Cookie: sessionid=xxx。CloseableHttpClient client = HttpClients.custom()
.setDefaultCookieStore(new BasicCookieStore()) // 自動管理 Cookie
.build();
// 1. 登入
HttpPost login = new HttpPost("https://192.168.1.1/login.cgi");
login.setEntity(new UrlEncodedFormEntity(Arrays.asList(
new BasicNameValuePair("username", "admin"),
new BasicNameValuePair("password", "123456")
), Consts.UTF_8));
client.execute(login); // Cookie 自動存入 CookieStore
// 2. 重啟
HttpGet reboot = new HttpGet("https://192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=%E9%87%8D%E5%90%AF%E8%B7%AF%E7%94%B1%E5%99%A8");
HttpResponse resp = client.execute(reboot);
System.out.println(EntityUtils.toString(resp.getEntity()));
BasicCookieStore 讓 HttpClient 自動處理 Cookie 存取。Referer、User-Agent、CSRF Token,請完整模擬瀏覽器行為。