• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何使用Python制作一个很大的HTTP(S)请求?

python-2.7 来源:JCGB 7次浏览

编辑:我将问题扩展到HTTPS。 “S”部分尚未解决,我不需要它,但它可能对其他人很有意思。如何使用Python制作一个很大的HTTP(S)请求?

我想与Python 2.7做的

hdr='GET/HTTP/1.1\r\nContent-Length: 10000000000\r\n\r\n' 
(echo -en "$hdr"; dd if=/dev/zero bs=1000000 count=999; read tmp) | nc $SOME_IP 80 

相当。如果可能的话,我只想使用标准库加上requestssockets模块。上述脚本向$SOME_IP发送一个大的HTTP请求(〜1GB的零),而不会对发送方RAM产生负担。


===========解决方案如下:

像这样的东西?

import socket 

def get_content_length(): 
    return 10000000000 

def get_chunk_size(): 
    return 1000000 

def yield_content(): 
    total_size = get_content_length() 
    chunk_size = get_chunk_size() 
    current_size = 0 
    end = total_size - chunk_size 
    chunk = '\x00' * chunk_size 
    while current_size < end: 
     yield chunk 
     current_size += chunk_size 
    yield chunk[:total_size - current_size] 

s = socket.socket() 
s.connect((host, port)) 
hdr='GET/HTTP/1.1\r\nContent-Length: %s\r\n\r\n' % get_content_length() 
s.sendall(hdr) 
for chunk in yield_content(): 
    s.sendall(chunk) 
# should I wait for the response? 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)