Maison >développement back-end >Tutoriel Python >Quel est le principe du protocole HTTP dans le robot d'exploration Python ?
Dans cet article, nous en apprendrons davantage sur les principes de base du HTTP et comprendrons ce qui se passe entre la saisie de l'URL dans le navigateur et l'obtention du contenu de la page Web. Comprendre ces contenus nous aidera à mieux comprendre les principes de base des robots d'exploration.
Ici, nous apprenons d'abord l'URI et l'URL. Le nom complet de l'URI est Uniform Resource Identifier, qui est l'identifiant de ressource unifié, et le nom complet de l'URL est Universal Resource Locator, qui est le localisateur de ressources unifié. .
URL est un sous-ensemble d'URI, ce qui signifie que chaque URL est un URI, mais que tous les URI ne sont pas une URL. Alors, quel type d'URI n'est pas une URL ? L'URI comprend également une sous-classe appelée URN, qui signifie Universal Resource Name. L'URN nomme uniquement la ressource sans préciser comment la localiser. Par exemple, urn:isbn:0451450523 spécifie l'ISBN d'un livre, qui peut identifier le livre de manière unique, mais ne précise pas où localiser le livre. La relation entre l'URL, l'URN et l'URI.
Mais dans l'Internet actuel, les URN sont rarement utilisés, donc presque tous les URI sont des URL. Nous pouvons appeler les liens Web généraux soit des URL, soit des URI, je les appelle personnellement des URL.
Ensuite, comprenons un autre concept : l'hypertexte. Son nom anglais est hypertexte. La page Web que nous voyons dans le navigateur est analysée par hypertexte. Le code source de la page Web est une série de codes HTML, qui contient un. série de balises -, telles que img pour afficher des images, p pour spécifier les paragraphes d'affichage, etc. Une fois que le navigateur a analysé ces balises, il forme la page Web que nous voyons habituellement, et le code source HTML de la page Web peut être appelé hypertexte.
Par exemple, nous ouvrons n'importe quelle page du navigateur Chrome, comme la page d'accueil de Taobao, faisons un clic droit n'importe où et sélectionnons l'élément "Inspecter"
HTTP et HTTPS
Sur la page d'accueil de Baidu, l'URL aura http ou https au début, qui est le type de protocole requis pour accéder aux ressources. Parfois, nous verrons également des URL commençant par ftp, sftp et smb, qui sont tous des types de protocoles. Dans les robots d’exploration, les pages que nous explorons utilisent généralement le protocole http ou https. Comprenons d’abord la signification de ces deux protocoles. Le nom complet de HTTP est Hyper Text Transfer Protocol, et son nom chinois est Hyper Text Transfer Protocol. Le protocole HTTP est un protocole de transmission utilisé pour transmettre des données hypertextes du réseau vers un navigateur local. Il peut garantir une transmission efficace et précise des documents hypertextes. HTTP est une spécification formulée conjointement par le World Wide Web Consortium et l'Internet Engineering Task Force (IETF). Actuellement, la version HTTP1.1 est largement utilisée. Le nom complet de HTTPS est Hyper Text Transfer Protocol over Secure Socket Layer. Il s'agit d'un canal HTTPdestiné à la sécurité. En termes simples, il s'agit d'une version sécurisée de HTTP, c'est-à-dire qu'une couche SSL est ajoutée à HTTP, qui. est appelé HTTPS.
La base de sécurité du HTTPS est SSL, donc le contenu transmis via celui-ci est crypté par SSL. Ses fonctions principales peuvent être divisées en deux types.
Établir un canal de sécurité de l'information pour assurer la sécurité de la transmission des données.
Confirmez l'authenticité du site Web. Pour tout site Web utilisant HTTPS, vous pouvez cliquer sur la marque de verrouillage dans la barre d'adresse du navigateur pour afficher les informations réelles une fois le site Web authentifié. Vous pouvez également les vérifier via le sceau de sécurité. délivré par l'agence CA.
Aujourd'hui, de plus en plus de sites Web et d'applications se développent dans le sens du HTTPS, par exemple :
Nous entrons une URL dans le navigateur, et après avoir appuyé sur Entrée, nous observerons le contenu de la page dans le navigateur. En fait, ce processus consiste en ce que le navigateur envoie une requête au serveur sur lequel se trouve le site Web. Après avoir reçu la demande, le serveur du site Web traite et analyse la demande, puis renvoie la réponse correspondante, puis la renvoie au navigateur. La réponse contient le code source de la page et d'autres contenus, et le navigateur l'analyse et affiche la page Web. Le client représente ici notre propre navigateur PC ou mobile, et le serveur est le serveur sur lequel se trouve le site Web que nous souhaitons visiter.
À partir de Chrome 56, lancé en janvier 2017, Google a affiché un avertissement de risque pour les liens URL qui ne sont pas cryptés HTTPS, c'est-à-dire rappelant aux utilisateurs que "Cette page Web n'est pas sécurisée" en évidence dans la barre d'adresse. .
Le document d'exigences officiel du programme Tencent WeChat Mini exige que le backend utilise des requêtes HTTPS pour la communication réseau. Les noms de domaine et les protocoles qui ne remplissent pas les conditions ne peuvent pas être demandés.
- Processus de demande HTTP
RequestUne requête est envoyée du client au serveur et peut être divisée en quatre parties : méthode de requête (Request Method), URL demandéeMéthode de demande(Request URL), en-tête de requête (Request Headers), corps de la requête (Request Corps ).
Il existe deux méthodes de requête courantes : GET et POST.
Entrez l'URL directement dans le navigateur et appuyez sur Entrée. Cela lancera une requête GET et les paramètres de la requête seront directement inclus dans l'URL. Par exemple, la recherche de Python dans Baidu est une requête GET avec le lien https://www baidu com/. L'URL contient les informations sur le paramètre de la requête. Le paramètre wd représente ici le mot-clé à rechercher. Les requêtes POST sont principalement lancées lorsqu'un formulaire est soumis. Par exemple, pour un formulaire de connexion, après avoir saisi le nom d'utilisateur et le mot de passe, cliquer sur le bouton « Connexion » lancera généralement une requête POST, et les données sont généralement transmises sous la forme d'un formulaire et ne seront pas reflétées dans l'URL.
La différence entre les méthodes de requête GET et POST est la suivante :
Les paramètres de la requête GET sont inclus dans l'URL et les données peuvent être vues dans l'URL, contrairement à l'URL de la requête POST. inclure ces données, et les données sont toutes transmises via le formulaire. Si elles sont transmises dans le formulaire, elles seront incluses dans le corps de la demande.
Les données soumises par la requête GET ne font que 1024 octets au maximum, alors que la méthode POST n'a pas de limite.
De manière générale, lors de la connexion, vous devez soumettre votre nom d'utilisateur et votre mot de passe, qui contiennent des informations sensibles. Si vous utilisez GET pour demander, le mot de passe sera exposé dans l'URL, provoquant une fuite de mot de passe, il est donc préférable de le faire. envoyez-le en POST. Lors du téléchargement de fichiers, la méthode POST sera également utilisée car le contenu du fichier est relativement volumineux.
La plupart des requêtes que nous rencontrons habituellement sont des requêtes GET ou POST. Il existe également certaines méthodes de requête, telles que GET, HEAD,
POST, PUT, DELETE, OPTIONS, CONNECT, TRACE, etc.
URL demandée
请求的网址,即统一资源定 位符URL,它可以唯一确定 我们想请求的资源。
En-tête de la demande
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie . Referer. User-Agent等。
Corps de la demande
请求体一般承载的内容是 POST请求中的表单数据,而对于GET请求,请求体则为空。
Res La réponse, renvoyée par le serveur au client, peut être divisée en trois parties : Code d’état de la réponse. En-têtes de réponse et corps de réponse.
Code d'état de la réponse
响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表 服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态,如状态码为200,则 证明成功返回数据,再进行进一步的处理, 否则直接忽略。
En-tête de réponse
响应头包含了服务器对请求的应答信息,如Content-Type、Server、 Set-Cookie 等。
Corps de la réponse
最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体 就是网页的HTML代码;请求- -张图片时 ,它的响应体就是图片的二进制数据。我们做爬虫请 求网页后,要解析的内容就是响应体.
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!