PHP 如何发送原始 HTTP 数据包
我想将原始 http 数据包发送到网络服务器并接收其响应,但我找不到方法来做到这一点。我对套接字缺乏经验,我发现的每个链接都使用套接字发送 udp 数据包。任何帮助都会很棒。
I want to send a raw http packet to a webserver and recieve its response but i cant find out a way to do it. im inexperianced with sockets and every link i find uses sockets to send udp packets. any help would be great.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看一下
fsockopen
手册页中的这个简单示例:服务器是通过
fsockpen
建立的。$out
保存 HTTP 请求,然后使用frwite
发送。然后使用fgets
读取 HTTP 响应。Take a look at this simple example from the
fsockopen
manual page:The connection to the server is established with
fsockpen
.$out
holds the HTTP request that’s then send withfrwite
. The HTTP response is then read withfgets
.如果您只想执行 GET 请求并接收响应正文,则大多数文件函数都支持使用 url:
对于不仅仅是简单的 GET,请使用curl(您必须将其编译为 php)。使用curl,您可以执行POST 和HEAD 请求,以及设置各种标头。
If all you want to do is perform a GET request and receive the body of the response, most of the file functions support using urls:
For more than simple GETs, use curl (you have to compile it into php). With curl you can do POST and HEAD requests, as well as set various headers.
cURL 比实现客户端 HTTP 更容易。您所要做的就是设置一些选项,cURL 会处理其余的事情。
如果您需要设置 cURL 不支持的标头,请使用 CURLOPT_HTTPHEADER 选项,传递附加标头数组。如果需要解析标头,请将 CURLOPT_HEADERFUNCTION 设置为回调。阅读
curl_setopt
的文档以获得更多选择。cURL is easier than implementing client side HTTP. All you have to do is set a few options and cURL handles the rest.
If you need to set a header that cURL doesn't support, use the CURLOPT_HTTPHEADER option, passing an array of additional headers. Set CURLOPT_HEADERFUNCTION to a callback if you need to parse headers. Read the docs for
curl_setopt
for more options.