python - 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)
但是现在,代码不打印任何东西。有什么问题?
解决方案
这本书的代码是发送“GET / HTTP/1.1\Host: google.com\r\n\r\n”。此代码表示向 google 发送获取请求,以便它可以获取您发送的请求的响应。您的 msg 不是 HTTP 的请求,因此 google 不会为您发送 msg 的响应。
推荐阅读
- android - Flutter 从 firebase 填充 DropDown 中的数据
- php - PHP SoapClient 的 WSDL 文件
- python - 进程以退出代码 137 结束(被信号 9:SIGKILL 中断):检索图像数据
- php - Google Cloud Vision 在本地主机上工作,但不在 Google Cloud 托管的 WordPress 网站上
- ios - 导航视图有问题(SwiftUI、iOS)
- python - 如何在 Python 中比较两个 3D 图?
- numpy - numpy - numpy.r_['string integer', array] 的第三个字符串整数的解释
- javascript - 解构后直接赋值全局变量
- algorithm - 如何为多个文档中的字符串选择最佳匹配,其中两者的分数相等?
- javascript - Javascript - 异步加载代码时 window.onload 的替代方案