python使用哪些端口发送html请求?使用urllib或urllib2

Man*_*ang 1 python port http urllib

我正在使用webpy制作一个小网站.当我想使用OAuth时,我发现防火墙会停止对任何网站的http请求,我甚至无法使用IE浏览互联网.

所以我让管理员为我打开一些端口,但我不知道python或IE将使用哪些端口来发送http请求.

谢谢!

aba*_*ert 8

我假设你在谈论远程端口.在这种情况下,只需告诉管理员打开标准Web端口.真的,如果你的管理员不知道如何通过防火墙使IE工作,他是没有希望的.我建议走到街上随机的人那里说"80和443"直到有人抬头,然后解雇你的管理员并雇用那个人; 他不能再恶化了.

如果您的管理员确实知道他在做什么,并希望您使用HTTP代理而不是直接连接,请让他在IE中为您设置代理,查看他使用的设置,然后回到这里并搜索如何在Python中使用HTTP代理(有很多答案),如果你遇到问题请求帮助.

如果你在谈论本地端口,因为你有一个疯狂的防火墙,他们将从一些大范围随机挑选.如果你想要覆盖每个常见的操作系统,你需要打开所有1024-65535,尽管如果你只需要处理一个平台,大多数都使用比这个更小的范围,如果机器不会这样做除了运行程序之外,大多数都有办法将其限制在更小的范围内(例如,Windows上只有255个端口).谷歌"短暂的端口"了解详情.

如果您需要限制本地端口,关键是在调用bind之前调用套接字connect.如果你认为你在谈论当地的港口,你可能错了.去询问您的管理员(或您刚刚雇用的新管理员)并确保.但如果你......

如果你正在使用urllib/ urllib2,它没有任何办法可以做你想要的,所以你不能再那样做了.您可以下拉到httplib,它允许您传递source_address一个(host, port)元组,它将用于在连接之前绑定套接字.它并不像你使用的那么简单,但它比从头开始实现HTTP要容易得多.

您可能还希望查看请求,我知道这些请求具有自己的本机OAuth支持,并且可能有一种指定源地址的方法.(我没看过,但我经常发现每当我想知道是否requests可以做X,它可以,并且以最明显的方式我想到......)API requests通常类似于urllib2什么时候urllib2更健全,更简单,更清洁什么时候urllib2很麻烦,所以搬东西通常很容易.

无论如何,无论如何,您都必须考虑这样一个事实,即一次只能将一个套接字绑定到同一个本地端口.那么,如果两个程序同时运行会发生什么,并且它们都需要建立出站连接,而您的管理员只给了您一个端口?其中一个会失败.那可以接受吗?

如果没有,你真正需要做的是打开一系列端口,并编写random.shuffle在该范围内执行的代码,然后尝试bind它们直到成功.这意味着您需要一个HTTP库,它允许您在套接字工厂或预先打开的套接字中提供,而不是仅仅指定一个端口,而大多数端口都没有,这可能意味着您将要复制一个httplib资源.

如果所有其他方法都失败了,您始终可以设置一个本地代理,该代理绑定到向外代理时所需的任何源端口(或端口范围).然后,您可以按原样使用您喜欢的高级库,并连接到本地代理,防火墙无法分辨代理背后的情况.

如您所见,这并不容易.这主要是因为你实际上很少这样.

  • +1是选择系统管理员的最佳方法. (3认同)

Joh*_*nck 5

通常,当程序想要使用端口但不关心它具有哪个数字时,它使用" 短暂端口".这通常是客户端应用程序,其中远程端口是固定的(由服务器),但本地端口没有任何区别.

通常,防火墙将允许来自任何端口的传出连接,简单地阻止到未知端口的传入连接,理论上应该允许发出传出请求的内部机器决定什么是正确的,并且坏的角色都在"公共"端.

您可能会发现管理员要求您使用"HTTP代理".如果是这样,这里是Ruby的说明,我想你可以移植到Python:Ruby和Rails - oauth和http代理