Python套接字模块。连接到HTTP代理,然后在外部资源上执行GET请求

大卫·阿滕布鲁

首先,我了解还有其他模块,例如“请求”将更适合且更易于使用,但是我想使用套接字模块更好地理解HTTP。

我有一个执行以下操作的简单脚本:

客户端---> HTTP代理--->外部资源(GET Google.com)

我可以连接到HTTP代理,但是当我将google.com的GET请求标头发送到代理时,它根本无法为我提供任何响应。

#!/usr/bin/python
import socket
import sys



headers = """GET / HTTP/1.1\r\n
Host: google.com\r\n\r\n"""



socket = socket

host = "165.139.179.225" #proxy server IP
port = 8080              #proxy server port

try:
    s = socket.socket()
    s.connect((host,port))
    s.send(("CONNECT {0}:{1} HTTP/1.1\r\n" + "Host: {2}:    {3}\r\n\r\n").format(socket.gethostbyname(socket.gethostname()),1000,port,host))
    print s.recv(1096)
    s.send(headers)
    response = s.recv(1096)
   print response
   s.close()
except socket.error,m:
   print str(m)
   s.close()
   sys.exit(1)
斯蒂芬·乌尔里希(Steffen Ullrich)

要向代理发出HTTP请求,请打开与代理服务器的连接,然后发送HTTP代理请求。该请求与普通的HTTP请求基本相同,但是包含绝对URL而不是相对URL,例如

 > GET http://www.google.com HTTP/1.1
 > Host: www.google.com
 > ...

 < HTTP response

要发出HTTPS请求,请使用CONNECT方法打开一个隧道,然后在该隧道内正常进行,即进行SSL握手,然后在隧道内进行正常的非代理请求,例如

 > CONNECT www.google.com:443 HTTP/1.1
 >
 < .. read response to CONNECT request, must be 200 ...

 .. establish the TLS connection inside the tunnel

 > GET / HTTP/1.1
 > Host: www.google.com

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python 请求是否真的连接到 http 代理?

来自分类Dev

无法使用套接字模块在Python中设置ECN位

来自分类Dev

Python 3.4.2-套接字模块不可调用

来自分类Dev

在外部连接到计数表时补全缺失的行

来自分类Dev

Zabbix HTTP 代理 0 然后连接失败

来自分类Dev

Java连接到网页然后执行JavaScript

来自分类Dev

如何从 GCP 虚拟机实例连接到端口 3459 上的外部代理?

来自分类Dev

使用代理在外部网页上运行javascript函数?

来自分类Dev

python套接字如何使用相同的套接字连接正确重定向http / s请求?

来自分类Dev

如何在Java中使用相同的套接字连接执行多个HTTP请求?

来自分类Dev

将套接字模块的输出写入文件

来自分类Dev

套接字模块,如何发送整数

来自分类Dev

将套接字模块的输出写入文件

来自分类Dev

gpg-agent神秘地停止工作-远程系统上的代理不再连接到ssh套接字

来自分类Dev

Python请求:连接到代理服务器时忽略异常和错误

来自分类Dev

Python如何区分python套接字模块中的数据(服务器接收时)。

来自分类Dev

是否可以通过Python的套接字模块发送文件和/或文件夹?

来自分类Dev

如何使用python套接字模块将消息发送到远程计算机?

来自分类Dev

如何在python的套接字模块中查看关于connect函数的文档

来自分类Dev

角$ q在http请求之前执行“然后”

来自分类Dev

Python请求模块连接超时

来自分类Dev

在连接到VPN时,第一个Internet失败,然后我无法访问VPN上的资源

来自分类Dev

如何通过HTTP代理连接SSL套接字?

来自分类Dev

EC2上的Gatsby不在外部连接

来自分类Dev

使用 python 中的请求模块连接到 Azure-Datalakes-gen2 时遇到问题

来自分类Dev

(有关POST请求的问题)是否有一种方法可以发送POST请求,然后在外部发生302事件时取回检索到的资源?

来自分类Dev

在Mac OS上无法通过HTTP从容器外部连接到Clickhouse

来自分类Dev

连接到远程主机,然后执行系统命令的C程序

来自分类Dev

无法使用代理上的http连接到袜子

Related 相关文章

  1. 1

    Python 请求是否真的连接到 http 代理?

  2. 2

    无法使用套接字模块在Python中设置ECN位

  3. 3

    Python 3.4.2-套接字模块不可调用

  4. 4

    在外部连接到计数表时补全缺失的行

  5. 5

    Zabbix HTTP 代理 0 然后连接失败

  6. 6

    Java连接到网页然后执行JavaScript

  7. 7

    如何从 GCP 虚拟机实例连接到端口 3459 上的外部代理?

  8. 8

    使用代理在外部网页上运行javascript函数?

  9. 9

    python套接字如何使用相同的套接字连接正确重定向http / s请求?

  10. 10

    如何在Java中使用相同的套接字连接执行多个HTTP请求?

  11. 11

    将套接字模块的输出写入文件

  12. 12

    套接字模块,如何发送整数

  13. 13

    将套接字模块的输出写入文件

  14. 14

    gpg-agent神秘地停止工作-远程系统上的代理不再连接到ssh套接字

  15. 15

    Python请求:连接到代理服务器时忽略异常和错误

  16. 16

    Python如何区分python套接字模块中的数据(服务器接收时)。

  17. 17

    是否可以通过Python的套接字模块发送文件和/或文件夹?

  18. 18

    如何使用python套接字模块将消息发送到远程计算机?

  19. 19

    如何在python的套接字模块中查看关于connect函数的文档

  20. 20

    角$ q在http请求之前执行“然后”

  21. 21

    Python请求模块连接超时

  22. 22

    在连接到VPN时,第一个Internet失败,然后我无法访问VPN上的资源

  23. 23

    如何通过HTTP代理连接SSL套接字?

  24. 24

    EC2上的Gatsby不在外部连接

  25. 25

    使用 python 中的请求模块连接到 Azure-Datalakes-gen2 时遇到问题

  26. 26

    (有关POST请求的问题)是否有一种方法可以发送POST请求,然后在外部发生302事件时取回检索到的资源?

  27. 27

    在Mac OS上无法通过HTTP从容器外部连接到Clickhouse

  28. 28

    连接到远程主机,然后执行系统命令的C程序

  29. 29

    无法使用代理上的http连接到袜子

热门标签

归档