Exemple d'analyse du robot d'exploration Java
Tout d'abord, après avoir lu cet article, cela ne garantit pas que vous deviendrez un maître, mais cela peut vous aider à comprendre ce qu'est un robot, comment utiliser un robot et comment utiliser le protocole http pour envahir d'autres Les systèmes des gens. Bien sûr, ce ne sont que quelques tutoriels simples. Obtenez-le Quelques données simples
Commençons par le code et expliquons-le étape par étape :
Ceci est une classe d'outils pour vous. pas besoin de regarder en détail. Vous pouvez trouver des classes d'outils pour envoyer des requêtes http partout sur Internet. Il existe peu de packages Guidez-le vous-même
package com.df.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.jsoup.Connection; import org.jsoup.Connection.Method; import org.jsoup.Connection.Response; import org.jsoup.Jsoup; import com.df.controller.DFContorller; public class HttpPosts { private final static Logger logger = Logger.getLogger(DFContorller.class); public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream(),"utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { logger.info("发送 POST 请求出现异常!"+e); e.printStackTrace(); } //使用finally块来关闭输出流、输入流 finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return result; } public static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); connection.setRequestProperty("Cookie","PHPSESSID=27roc4d0ccd2cg4jbht80k8km2"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream(),"utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } }
----------. ----------------------------------- Ligne de démarcation
Allons See More entrez le sujet : Tout d'abord, vous devez entrer, vous devez explorer la page de connexion du site Web, afficher le code source de la page et trouver le nom de la méthode pour envoyer la demande de connexion. Généralement, les petits sites Web seront écrits directement dans le champ de recherche ; action de surface, qui est facile à trouver. Les sites Web de taille moyenne ne seront pas écrits aussi directement. Il faudra un certain effort pour le trouver. Il peut être en js ou non sur cette page. à l'outil une fois et voyez les informations de demande capturées. Il s'agit d'un grand site Web. J'ai exploré le backend de JD.com. J'ai utilisé le f12 fourni avec le navigateur. Je n'arrive pas à obtenir les informations de connexion. . Enfin, j'ai réfléchi à de nombreuses astuces. Obtenez l'interface de connexion de Jingdong ; implémentez l'exploration ; après avoir obtenu l'adresse de l'interface de connexion ; téléchargez le code
String data=HttpPosts.sendGet (adresse de connexion (sans paramètres ; type de chaîne). adresse), paramètres (tels que : user_id =6853&export=112)); (Le statut de connexion renvoyé est généralement au format json. Il comptera si vous vous êtes connecté avec succès, certains sont vrais, certains sont 1, selon la situation) Choisissez get ou post pour imiter la demande de la page de connexion
Ensuite, faites une autre demande pour obtenir le cookie
Connection conn = Jsoup.connect("登录后页面的地址"); conn.method(Method.GET); conn.followRedirects(false); Response response = conn.execute(); System.out.println(response.cookies());
Parlons du cookie transmis dynamiquement dans la méthode get ou post et remplacé le cookie codé en dur ; car il s'agit d'un test, le cookie est codé en dur et peut être écrit dynamiquement ;
Après cela, si vous souhaitez visiter la page après connexion, la page d'accueil, ou les données page, elle doit contenir des cookies et des informations sur les paramètres de base de la requête http, sinon elle sera définitivement interceptée.
String data=HttpPosts.sendGet(adresse de connexion (sans paramètres ; adresse de type chaîne), paramètres (tels que : user_id=6853&export=112)); vous cette fois est la leur Page, si vous trouvez une interface de données du côté opposé, vous pouvez y accéder directement, et les données seront renvoyées directement, sinon vous devrez analyser sa page, ce qui est très gênant. Jsoup est généralement utilisé pour analyser les pages.
En fait, il s'agit d'un autre type d'intrusion. Vous n'avez pas besoin de connaître le document d'interface de l'autre partie. Vous pouvez utiliser un programme pour accéder directement au serveur de l'autre partie en utilisant le protocole http.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
