Ich wollte kürzlich automatisch posten und antwortet automatisch. Ich versuchte es mit einem Forum und stellte fest, dass es machbar war, aber es wurde in Zukunft nicht erneut verwendet, um zu vermeiden, dass der normale Betrieb des Forums beeinflusst wurde.
1. Das Format des Postlinks ist
http: //bbs.***.***
Die Zahländerungen am Ende des 774210 können durch die Erhöhung verschiedener Beiträge erhalten werden
2. Verhindern Sie, dass der Posten erneut gelöscht wird
3. Inkrementieren Sie die ID -Nummer anschließend und stellen Sie eine Postanforderung, um auf jeden Link zu antworten
Schlüsselpunkte
Bei der Beantwortung müssen Benutzeranmeldeinformationen eine Cookies verwenden
Ein anderer Weg ist die Simulation des Anmeldes
Dieser Artikel nimmt erstere an
Bestimmen Sie, ob der entsprechende Posten der URL existiert
Es ist möglich, dass der Benutzer einen Beitrag veröffentlicht hat. Die URL ist beispielsweise http: //bbs.***.***/forum.php? Mod = viewthread & tid = 774200
Später wurde der Benutzer des Beitrags vom Administrator gelöscht oder gelöscht. Obwohl der Posten verschwunden ist, existiert der TID = 774200 immer noch.
public static boolean isExist (int id) {String tmppath = Basierfer + id; URL URL; try {url = new url (tmppath); HttpurlConnection con = (httpurlConnection) url.openconnection (); con.addRequestProperty ("Inhaltstyp", "Text/html; charset = utf-8"); con.addRequestProperty ("User-Agent", "Mozilla/5.0 (Windows NT 6.1) Applewebkit/537,36 (khtml, wie Gecko) Chrome/38.0.2125.104 Safari/537.36"); con.addrequestProperty ("Referer", "http://t.dianping.com/register"); con.setRequestMethod ("get"); if (con.getResponSCode () == 200) {inputStream inputStr = con.getInputStream (); String info = new String (streamtool.read (inputStr), "utf-8"); if (info.contains ("Entschuldigung, das angegebene Thema existiert nicht oder wurde gelöscht oder wird überprüft")) {System.out.println ("id =" + id + "Post existiert oder wurde gelöscht!"); false zurückgeben; }}} catch (fehl Formaledurlexception e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (Ausnahme e) {// Todo automatisch generierter Block E. printstacktrace (); } catch (Ausnahme e) {// Todo automatisch generierter Block E. printstacktrace (); } catch (Ausnahme e) {// Todo automatisch generierter Block E. printstacktrace (); } catch (Ausnahme e) {// Todo automatisch generierter Block E. printstacktrace (); } return true;}Simulieren Sie das Posting <BR /> Der Code ist relativ einfach. Die Vorsichtsmaßnahme ist, Ihr eigenes Cookie zu finden und ihn String Yourcookie zuzuweisen
Senden Sie eine Antwort mit dem Beitrag, und die Antwortmeldung befindet sich in MapData.put ("Nachricht", "Freundschaftshilfe").
private statische endgültige String -String -Baserefer = "http: //bbs.**.**/forum.php? mod = viewthread & tid ="; private static final String yourcookie = "q8qa_2132_Saltkey = **; 774210; // Sie müssen ändern (int i = 0; i <100; i ++) {postMessage (startid); startid ++; }} public static void postMessage (int id) {if (! isExist (id)) {return; } String tmppath = BasieRefer + id; StringBuilder path = new StringBuilder (tmppath); Karte <String, String> mapData = new LinkedHashMap <String, String> (); mapData.put ("mod", "post"); MapData.put ("Aktion", "Antwort"); MapData.put ("ReplySubmit", "Ja"); MapData.put ("Beim", "Ja"); MapData.put ("Handy", "Fastpost"); mapData.put ("inajax", "1"); MapData.put ("Nachricht", "Freundschaftsunterstützung"); MapData.put ("Formhash", "86ec5d81"); try {for (map.entry <string, string> mapent: mapData.entryset ()) {path.append ("&"); path.Append (mapent.getKey () + "="); path.Append (urlencoder.encode (mapent.getValue (), "utf-8")); } URL URL = new URL (path.toString ()); HttpurlConnection con = (httpurlConnection) url.openconnection (); con.setRequestMethod ("Post"); con.setRequestProperty ("Content-Typ", "Anwendung/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, wie 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.getResponSCode () == 200) {inputStream inputStr = con.getInputStream (); String info = new String (streamtool.read (inputStr), "utf-8"); System.out.println ("erfolgreich in id =" + id + "!"); try {thread.sleep (20 * 1000); } catch (InterruptedException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }} catch (nicht supportedenCodingException e) {// todo automatisch generierter Catch-Block e.printstacktrace (); } catch (fehl Formaledurlexception e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (Ausnahme e) {// Todo automatisch generierter Block E. printstacktrace (); }} Es gibt auch eine Werkzeugmethode, die Eingangsströme in Bytes umwandelt
Klasse Streamtool {public static byte [] read (InputStream InputStr) löst eine Ausnahme aus {bytearrayoutputStream outstr = new bytearrayoutputStream (); // TODO Auto-generierter Methode Stub Byte [] Buffer = New Byte [1024]; int len = 0; while ((len = inputstr.read (puffer))! = -1) {outstr.write (buffer, 0, len); } inputStr.close (); return overstr.tobytearray (); }}Reproduktionsbild:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.