Saya baru -baru ini ingin memposting secara otomatis dan membalas secara otomatis. Saya mencobanya dengan sebuah forum dan menemukan bahwa itu layak, tetapi tidak digunakan lagi di masa depan untuk menghindari mempengaruhi operasi normal forum.
1. Format tautan pos
http: //bbs.***.***.**/forum.php? mod = viewthread & tid = 774210
Jumlahnya berubah pada akhir 774210 dapat diperoleh dengan mendapatkan posting yang berbeda
2. Cegah pos dari dihapus lagi, dan tentukan apakah ada pos
3. Meningkat Nomor ID sesudahnya, dan membuat permintaan posting untuk membalas setiap tautan
Poin -poin penting
Membalas membutuhkan informasi login pengguna satu adalah menggunakan cookie
Cara lain adalah dengan mensimulasikan login
Artikel ini mengadopsi yang pertama
Tentukan apakah ada posting URL yang sesuai
Ada kemungkinan bahwa pengguna telah memposting posting, misalnya, URL http: //bbs.***.***.**/forum.php? Mod = viewthread & tid = 774200
Kemudian, pengguna posting dihapus atau dihapus oleh administrator. Meskipun posnya hilang, TID = 774200 masih ada.
public static boolean isExist (int id) {string tMppath = baserefer + id; URL URL; coba {url = url baru (tMppath); HttpurlConnection con = (httpurlconnection) url.openconnection (); con.addrequestproperty ("tipe konten", "teks/html; charset = utf-8"); con.addrequestproperty ("agen-pengguna", "mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (khtml, seperti tokek) chrome/38.0.2125.104 safari/537.36"); con.addrequestproperty ("referer", "http://t.dianping.com/register"); con.setRequestMethod ("get"); if (con.getResponsecode () == 200) {inputStream inputstr = con.getInputStream (); String info = string baru (streamTool.read (inputStr), "UTF-8"); if (info.contains ("Maaf, topik yang ditentukan tidak ada atau telah dihapus atau sedang ditinjau")) {System.out.println ("id =" + id + "post ada atau telah dihapus!"); mengembalikan false; }}} catch (MalFormedurlexception e) {// TODO Auto-Encanerated Catch Block E.PrintStackTrace (); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); } return true;}Simulasikan Posting <br /> Kode ini relatif sederhana, tindakan pencegahan adalah menemukan cookie Anda sendiri dan menetapkannya untuk merangkai Anda.
Kirim balasan menggunakan posting, dan pesan balasan ada di mapData.put ("pesan", "bantuan persahabatan")
private static final string baserefer = "http: //bbs.**.**.**/forum.php? Mod = viewThread & tid ="; string final statis pribadi yourcookie = "q8qa_2132_saltkey = **; q8qa_2132_lastvisit = ***) start; Q8QA_2132_LASTVISIT = ***); 774210; // Anda membutuhkan perubahan untuk (int i = 0; i <100; i ++) {postmessage (startId); startid ++; }} public static void postmessage (int id) {if (! isExist (id)) {return; } String tMppath = baserefer + id; StringBuilder path = new StringBuilder (tMppath); Peta <String, String> mapData = LinkedHashMap baru <String, String> (); mapData.put ("mod", "post"); MapData.put ("Action", "Reply"); MapData.put ("ReplySubmit", "Ya"); mapData.put ("empur", "ya"); mapData.put ("candey", "fastpost"); mapData.put ("inajax", "1"); mapData.put ("pesan", "dukungan persahabatan"); MapData.put ("Formhash", "86ec5d81"); coba {untuk (map.entry <string, string> mapent: mapData.entryset ()) {path.append ("&"); path.append (mapent.getKey () + "="); Path.Append (urlencoder.encode (mapent.getValue (), "UTF-8")); } Url url = url baru (path.toString ()); HttpurlConnection con = (httpurlconnection) url.openconnection (); con.setRequestMethod ("post"); con.setRequestProperty ("tipe konten", "Aplikasi/X-WWW-Form-Urlencoded"); con.setRequestProperty ("Content-length", String.ValueOf (Path.Length ())); con.setRequestProperty ("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (Khtml, Like Gecko) Chrome/38.0.2125.104 Safari/537.36"); con.setRequestProperty ("cookie", yourcookie); con.setDoOutput (true); OutputStream outstr = con.getoutputStream (); outstr.write (path.toString (). getBytes ()); if (con.getResponsecode () == 200) {inputStream inputstr = con.getInputStream (); String info = string baru (streamTool.read (inputStr), "UTF-8"); System.out.println ("Diserahkan dengan sukses di id =" + id + "!"); coba {thread.sleep (20 * 1000); } catch (InterruptedException E) {// TODO Auto-Encanerated Catch Block E.PrintStackTrace (); }} catch (UnsupportedEncodingException e) {// TODO AUTO-ENCOMERATED CATCH Block E.PrintStackTrace (); } catch (MalFormedurlexception e) {// TODO Auto-Encanerated Catch Block E.PrintStackTrace (); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); }} Ada juga metode alat yang mengubah aliran input menjadi byte
kelas streamTool {public static byte [] baca (inputStream inputStr) melempar Exception {bytearrayoutputStream outstr = new ByTeArrayOutputStream (); // Metode Stub Byte Metode Auto-Auto TODO [] buffer = byte baru [1024]; int len = 0; while ((len = inputstr.read (buffer))! = -1) {outstr.write (buffer, 0, len); } inputstr.close (); return outstr.tobytearray (); }}Gambar reproduksi:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.