首页 > 解决方案 > Black Hat Python 代码书中的套接字问题

问题描述

我试图遵循本书的代码,但它是用 python 2 编写的。起初,我尝试运行本书的代码:

import socket

target_host = "www.google.com"
target_port = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect((target_host,target_port))

msg = "Hi!"

"""MSG = msg.encode()"""
client.send(msg)

response = client.recv(4096)

print(response)

然后它遇到了这个错误:TypeError: a bytes-like object is required, not 'str'。我用这样的编码更正了:

import socket

target_host = "www.google.com"
target_port = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect((target_host,target_port))

msg = "Hi!"
MSG = msg.encode()
client.send(MSG)

response = client.recv(4096)

print(response)

但是现在,代码不打印任何东西。有什么问题?

标签: pythonpython-3.x

解决方案


这本书的代码是发送“GET / HTTP/1.1\Host: google.com\r\n\r\n”。此代码表示向 google 发送获取请求,以便它可以获取您发送的请求的响应。您的 msg 不是 HTTP 的请求,因此 google 不会为您发送 msg 的响应。


推荐阅读