httpclient จำลองการเข้าสู่ระบบ (ใช้ js เพื่อตั้งค่าคุกกี้)
คัดลอกรหัสรหัสดังต่อไปนี้:
<html>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<link rel=stylesheet type=text/css href='/bbs.css'>
<script>document.cookie='utmpnum=51;path=/;domain=.' + window.location.host</script>
<script>document.cookie='utmpkey=20154732;path=/;domain=.' + window.location.host</script>
<script>document.cookie='utmpuserid=yay;path=/;domain=.' + window.location.host</script>
<meta http-equiv='รีเฟรช' content='0; url=/firstpage.php'>
h4ttpclient 4.3:
วิธีที่ง่ายที่สุดคือการปรับแต่ง httpclient ผ่านคุกกี้ที่ได้รับ ตามตัวอย่างข้างต้น วิธีการจะเป็นดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
CookieStore cookieStore = BasicCookieStore ใหม่();
สำหรับ (int i = 0; i <3; i++) {
ชื่อสตริง;
ค่าสตริง;
int flag=s.indexOf("document.cookie");
s=s.substring(แฟล็ก+17);
flag=s.indexOf('=');
ชื่อ = s.substring (0, ธง);
value=s.substring(flag+1, s.indexOf(';'));
คุกกี้ BasicClientCookie = BasicClientCookie ใหม่ (ชื่อ
ค่า);
cookie.setVersion(0);
cookie.setDomain(".www.zju88.org"); //URL นี้สอดคล้องกับค่าส่งคืนของ <span style="font-family: Arial, Helvetica, sans-serif;">window.location.host</ ช่วง>
cookie.setPath("/");
cookieStore.addCookie(คุกกี้);
-
//ตั้งร้าน
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCookieStore(คุกกี้สโตร์)
.สร้าง();
หุ่นยนต์:
ฉันค้นหาเป็นเวลานานและไม่พบ API ที่สอดคล้องกับวิธีการข้างต้น ฉันสามารถเพิ่มคุกกี้ได้ก่อนการเข้าชมแต่ละครั้งเท่านั้น
คัดลอกรหัสรหัสดังต่อไปนี้:
คุกกี้สตริง = "";
สำหรับ (int i = 0; i <3; i++) {
ชื่อสตริง;
ค่าสตริง;
int flag=s.indexOf("document.cookie");
s=s.substring(แฟล็ก+17);
flag=s.indexOf('=');
ชื่อ = s.substring (0, ธง);
value=s.substring(flag+1, s.indexOf(';'));
คุกกี้ +=ชื่อ +"="+ค่า;
ถ้า(i!=2)
คุกกี้+=";";
-
-
* ทุกครั้งที่เข้าใช้งานเครือข่าย
-
HttpGet httpget = HttpGet ใหม่ (url);
httpget.addHeader("คุกกี้",คุกกี้);
//หากมีคุกกี้อยู่ใน httpclient อยู่แล้ว คุณอาจต้องตั้งค่านโยบายคุกกี้ของ httpclient สำหรับรายละเอียด โปรดตรวจสอบ API อย่างเป็นทางการ (:
การตอบสนอง HttpResponse = httpclient.execute (httpget);
PS: หากคุณใช้ Java SE คุณยังสามารถใช้คลาส htmlunit ซึ่งจะดำเนินการ js ได้