🧁 Π‘ΠΊΡ€ΠΈΠΏΡ‚ Python для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²Π΅Π±-сайта HTTP / 2

by itisgood

Python быстр ΠΈ извСстСн своСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ возмоТностями.

Работая Π½Π°Π΄ инструмСнтом тСстирования HTTP/2, я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Python Π±Ρ‹Π» самым быстрым, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈ Π»Π΅Π³ΠΊΠΈΠΌ.

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ собствСнноС для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ сайт HTTP / 2 ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄.

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Python 3.x.

import socket
import ssl
import csv
import argparse

from urllib.parse import urlparse

socket.setdefaulttimeout(5)

headers = {"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}

def check_http2(domain_name):
	try:
		HOST = urlparse(domain_name).netloc
		PORT = 443

		ctx = ssl.create_default_context()
		ctx.set_alpn_protocols(['h2', 'spdy/3', 'http/1.1'])

		conn = ctx.wrap_socket(
			socket.socket(socket.AF_INET, socket.SOCK_STREAM), server_hostname=HOST)
		conn.connect((HOST, PORT))

		pp = conn.selected_alpn_protocol()

		if pp == "h2":
			return {"http2": True}
		else:
			return {"http2": False}
	except Exception as e:
		print(e)


parser = argparse.ArgumentParser()
parser.add_argument("domain", help="display a square of a given number",
                    type=str)
args = parser.parse_args()

print(check_http2(args.domain))

Для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис.

python3 $SCRIPT.py $URL

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

root@gf-lab:~# python3 http2.py https://siterelic.com
{'http2': True}
root@gf-lab:~#

 

Loading

You may also like

Leave a Comment