使用python的原始模块与网站交互

一.引言

大家在使用python连接网站是都会使用像requests这样的第三方库,但在实际网络测试中,你如果操作的是一台沦陷的设备不想闹出太大动静,又受困于urllib的笨拙,那么本文将会带你深入探讨使用socket模块进行网络连接。

二.思路

步骤序号方法
1连接网站并发送数据包
2循环接受回应

三.实现

step(1)–socket连接与数据发送:
使用socket.create_connection()来简化连接过程。

使用ssl.create_default_context()来创建SSL上下文,并使用wrap_socket方法来加密套接字,这样我们便能使用HTTPS协议。

使用sendall确保所有数据都被发送。

path变量是你要添加的具体信息。

import socket
import ssl

path = ''
host = 'www.baidu.com'
port = 443
sending = f'GET /{path} HTTP/1.1\r\nHost: {host}\r\n\r\n'
r = b''
count = 0
context = ssl.create_default_context()
try:
    with socket.create_connection((host, port)) as sock:
        with context.wrap_socket(sock, server_hostname=host) as ss:
            ss.settimeout(2)
            ss.sendall(sending.encode())
            while True:
                try:
                    pass          # 这部分我们接下来会添加
                except socket.timeout:
                    break
except socket.timeout:
    pass

except Exception as e:
    print(f'\n[!] 错误:{e}')

step(2)–while循环接受与打印:
使用双层try…except以确保所有数据都被发送。

try代码块:

data = ss.recv(4096)
r += data
if not data:
	break
count += 1
print('.', end='')

finally代码块:

print(f'\n[*] 共收到{count}个数据包')
message = r.decode()
if message:
	print(f'\n[*] 信息:\n{message}')
else:
   print('\n[?] 没有信息')

四.总结

简单,太简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值