python用socket模拟post请求

今天用python的socket模拟了下post请求,通过这个实例可以更加了解python中socket的使用,以及http请求和socket的相互关系等知识.

#coding=utf-8
import socket

if __name__=="__main__":

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("www.xxxxx.com",80))
  #pyhon 字符串很长时可以用下面这种括号加双引号的方式, 这样也不用像PHP那样 多行字符串需要用连接符连接起来 。
    str=("POST /login/log HTTP/1.1\r\n"
        "Host: www.xxxxx.com\r\n"
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0\r\n"
        "Referer: http://www.xxxxx.com/\r\n"
        "Content-Length: 17\r\n"
        "Cookie: session=f28edeacd71e759d05a80bb3cd9c91856952b3e3%7E58eb987a9efb26-19897462\r\n"
        "Content-Type: application/x-www-form-urlencoded\r\n"
        "Connection: keep-alive\r\n\r\n"
        "param1=a&param2=b"
        )
  # post 的关键是头部的 Content-Type: application/x-www-form-urlencoded\r\n 这行,之前只写了x-www-form-urlencoded,提交过去,后端php打印$_POST一直为空  # Content-Length: 17\r\n 的17是内容里要post的参数的长度(即param1=a&param2=b),注意头部和内容要用 \r\n\r\n 分开  
    s.send(str)
    data=s.recv(2084)
    print data
      #服务器一般发送完消息后,经过确认会主动断开socket
    s.close()
时间: 2024-10-09 13:56:04

python用socket模拟post请求的相关文章

PHP+SOCKET 模拟HTTP请求

HTTP消息结构 客户端请求包括四部份:请求行(状态行).请求头.空行.请求主体(数据),如下图: 服务端响应包括四部份:响应行(状态行).响应头.空行.响应主体(数据),如图: HTTP请求方法: POST .GET  .HEADE.  PUT.  TRACE  .DELETE .OPTIONS .CONNECT  (前三种最实用),有这麽多的请求方法,但web服务器不一定所有的都支持. GET   基本一致,请求指定的页面信息,并返回实体主体. HEAD  基本和GET一致 ,只不过返回的响

使用socket模拟Http请求

这里举一个简单的例子,使用socket来模拟一段http访问百度代码 封装的工具类如下,方法叫XHttp() package com.spider.net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socke

Python socket模拟HTTP请求

0x00 起 最近在做一个对时间要求比较高的扫描器,需要封装一下SOCKET模拟HTTP发包的一些常用函数.简单的说,就是重写一下requests中的get.post方法. 今天在写的时候,遇到一枚很奇怪的问题,对同一个URL,POST请求能正常返回信息,而一旦切到GET,socket time out. 伪代码如下: get_str = 'GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64)

python利用requests模拟http请求及请求头

一.通过requests发送请求 之前一直使用urllib以及urllib2模拟http请求发送,在实际场景中,我们需要造自己定义好的header.body等等,使用urllib很麻烦,很偶然的机会,接触到了requests,可以通过发送xml.简单易用,直接上代码: requests  connected():          #通过形参传入url以及请求参数,get方法发送请求     (param):         get = requests.get(==param)        

java socket模拟http请求

我们模拟SSLSocket连接,请求博客园首页,并打印响应消息.代码引用来自<Java网络编程精解>作者:孙卫琴 写这篇博客为了说明模拟过程中出现的一些问题,模拟时请先在浏览器访问目标路径,F12查看网络,查看原始的网络请求头. 注意: 1.HTTP请求报文包含请求行.请求头部.空行.请求包体4个部分组成. 2.模拟请求头部时Accept-Encoding不要使用压缩,否则响应结果会出现乱码 3.请求头部结束使用回车换行符结束 代码如下: package com.beluga.hello.ht

用socket 模拟http请求

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; class HttpHelper { #region 模拟客户端socket连接 private static Socket ConnectSocket(string server

Python 简单socket模拟ssh

OSI七层模型(Open System Interconnection,开放式系统互联) 应用层 网络进程访问应用层: 为应用程序进程(例如:电子邮件.文件传输和终端仿真)提供网络服务: 提供用户身份验证 表示层 数据表示: 确保接收系统可以读出该数据: 格式化数据: 构建数据: 协商用于应用层的数据传输语法: 提供加密 回话层 主机间通信: 建立.管理和终止在应用程序之间的会话 传输层 传输问题: 确保数据传输的可靠性: 建立.维护和终止虚拟电路: 通过错误检测和恢复: 信息流控制来保证可靠性

PHP socket模拟POST请求

<?php if (! function_exists ( 'socket_post' )) { function socket_post($url, $data, $referer = '') { if (! is_array ( $data )) { return; } $data = http_build_query ( $data ); $url = parse_url ( $url ); if (empty ( $url ['scheme'] ) || $url ['scheme']

python get post模拟请求

1.使用get方式时,url类似如下格式: [html] view plaincopy index.jsp?id=100&op=bind GET报问头如下: [html] view plaincopy GET /sn/index.php?sn=123&n=asa HTTP/1.1 Accept: */* Accept-Language: zh-cn host: localhost Content-Type: application/x-www-form-urlencoded Content