บทความนี้แชร์ Java จำลอง HTTP รับคำขอโพสต์และฟังก์ชั่นตอบกลับอัตโนมัติของ Campus BBS สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
แนวคิดการออกแบบ
ค้นหาคอลเลกชันของลิงก์โพสต์และเปลี่ยนหมายเลขในตอนท้ายและคุณสามารถรับโพสต์ที่แตกต่างกัน
ป้องกันไม่ให้โพสต์ถูกลบอีกครั้งและตรวจสอบว่ามีโพสต์อยู่หรือไม่
วนซ้ำผ่านคอลเลกชันนี้และทำคำขอโพสต์เพื่อตอบกลับแต่ละลิงก์
ประเด็นสำคัญ
บันทึก:
รหัส
รหัสค่อนข้างง่าย ข้อควรระวังคือการหาคุกกี้ของคุณเอง กำหนดของคุณให้กับสตริงของคุณและเรียกใช้โดยตรง
สิ่งสำคัญคือการพิจารณาว่าโพสต์มีอยู่หรือไม่ นี่คือคำขอ GET จากนั้นส่งคำตอบด้วยโพสต์ ข้อความตอบกลับนั้นถูกเข้ารหัสเป็น "ความช่วยเหลือที่เป็นมิตร" ใน mapdata.put ("ข้อความ", "เป็นมิตรช่วย") คุณสามารถแก้ไขได้
นำเข้า Java.io.ByTeArrayOutputStream; นำเข้า java.io.ioException; นำเข้า java.io.InputStream; นำเข้า Java.io.OutputStream; นำเข้า Java.io.unsupportenCodingException; นำเข้า Java.net.httpurlconnection; java.net.urlencoder; นำเข้า java.util.linkedhashmap; นำเข้า java.util.map; คลาสสาธารณะระหว่าง {สตริงสุดท้ายคงที่ส่วนตัว baserefer = "http://rs.xidian.edu.cn/forum.php?mod=viewthread สตริงสุดท้ายคงที่ส่วนตัว yourcookie = "q8qa_2132_saltkey = g1njjj3o; q8qa_2132_lastvisit = 1438243699; q8qa_2132_lastcheckfeed = 256730%7C14382520088; Q8QA_2132_AUTH = E11AEHHXPLGTYPFDK72YJZEGJHL1V70CUXXDTJ71VBU2DYUH%2BQHW3PGOJHSFXFJBVGNSVYFG1V%2BDLT0LT8KG6J Q8QA_2132_ST_T = 256730%7C1438571068%7C51F8A322985E44F65FF1143329E6779A; Q8QA_2132_MYREPEAT_RR = R0; tjpctrl = 1438781938176; Q8QA_2132_ST_P = 256730%7C1438781224%7C7A73EF608DC3CAF733308D63639B3BD0; Q8QA_2132_SID = ZNFQQN; โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int startId = 774210; // คุณต้องการการเปลี่ยนแปลงสำหรับ (int i = 0; i <100; i ++) {postmessage (startId); startId ++; }} public boolean isExist (int id) {string tmppath = baserefer + id; URL URL; ลอง {url = url ใหม่ (tmppath); httpurlConnection con = (httpurlconnection) url.openconnection (); con.addrequestProperty ("เนื้อหาประเภท", "ข้อความ/html; charset = utf-8"); Con.addrequestProperty ("ผู้ใช้ตัวแทน", "Mozilla/5.0 (Windows NT 6.1) Applewebkit/537.36 (khtml, เช่น Gecko) Chrome/38.0.2125.104 Safari/537.36"); Con.addrequestProperty ("ผู้อ้างอิง", "http://t.dianping.com/register"); con.setRequestMethod ("รับ"); if (con.getResponsEcode () == 200) {inputStream inputStRe = con.getInputStream (); สตริงข้อมูล = สตริงใหม่ (streamtool.read (inputstr), "utf-8"); ถ้า (info.contains ("ขออภัยหัวข้อที่ระบุไม่มีอยู่หรือถูกลบหรือถูกตรวจสอบ")) {system.out.println ("id =" + id + "โพสต์มีอยู่หรือถูกลบ!"); กลับเท็จ; }}} catch (malformedurlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } catch (ioexception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); } catch (exception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); } return true; } โมฆะคงที่สาธารณะ postmessage (int id) {ถ้า (! isExist (id)) {return; } สตริง tmppath = baserefer + id; path StringBuilder = new StringBuilder (TMPPATH); แผนที่ <สตริง, สตริง> mapData = ใหม่ linkedHashMap <สตริง, สตริง> (); mapData.put ("mod", "post"); mapData.put ("การกระทำ", "ตอบกลับ"); mapdata.put ("Replysubmit", "ใช่"); mapdata.put ("infoat", "ใช่"); mapData.put ("handlekey", "fastpost"); mapdata.put ("inajax", "1"); mapData.put ("ข้อความ", "การสนับสนุนมิตรภาพ"); MapData.put ("FormHash", "86EC5D81"); ลอง {สำหรับ (map.entry <string, string> mapent: mapdata.entryset ()) {path.append ("&"); path.append (mapent.getKey () + "="); path.append (urlencoder.encode (mapent.getValue (), "UTF-8")); } url url = url ใหม่ (path.toString ()); httpurlConnection con = (httpurlconnection) url.openconnection (); con.setRequestMethod ("โพสต์"); Con.setRequestProperty ("ประเภทเนื้อหา", "แอปพลิเคชัน/X-WWW-FORM-URLENCODED"); con.setRequestProperty ("ความยาวเนื้อหา", string.valueof (path.length ())); Con.setRequestProperty ("ผู้ใช้ตัวแทน", "Mozilla/5.0 (Windows NT 6.1) Applewebkit/537.36 (khtml, เช่น Gecko) Chrome/38.0.2125.104 Safari/537.36"); Con.setRequestProperty ("คุกกี้", YourCookie); Con.setDoOutput (จริง); OutputStream Outstr = Con.getOutputStream (); Outstr.Write (path.toString (). getBytes ()); if (con.getResponsecode () == 200) {inputStream inputStRe = con.getInputStream (); สตริงข้อมูล = สตริงใหม่ (streamtool.read (inputstr), "utf-8"); System.out.println ("ใน id =" + id + "โพสต์สำเร็จ!"); ลอง {thread.sleep (20 * 1000); } catch (interruptedException e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }}} catch (unsupportencodingexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } catch (malformedurlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } catch (ioexception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); } catch (exception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); }}} คลาส streamtool {public static byte [] read (inputstream inputstr) พ่นข้อยกเว้น {byteArrayOutputStream outstr = new ByTeArrayOutputStream (); // todo วิธีการที่สร้างอัตโนมัติ byte byte [] buffer = byte ใหม่ [1024]; int len = 0; ในขณะที่ ((len = inputstr.read (บัฟเฟอร์))! = -1) {outstr.write (บัฟเฟอร์, 0, len); } inputstr.close (); return outstr.tobytearray (); -แผนผังการสืบพันธุ์
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและเปิดใช้งานการตอบกลับโดยอัตโนมัติต่อโพสต์