当前位置: 首页 > 面试题库 >

通过特定的网络接口发送http请求

张丰
2023-03-14
问题内容

我有两个可以同时访问互联网的网络接口(WiFi和以太网)。假设我的界面是eth(以太网)和wlp2(wifi)。我需要特定的请求才能通过eth接口,其他需要通过wpl2

就像是:

// Through "eth"
request.post(url="http://myapi.com/store_ip", iface="eth")
// Through "wlp2" 
request.post(url="http://myapi.com/log", iface="wlp2")

我正在使用requests,但是我可以使用pycurlurllib如果没有任何方法可以使用它requests


问题答案:

我找到了使用的方法pycurl。这就像一个魅力。

import pycurl
from io import BytesIO
import json


def curl_post(url, data, iface=None):
    c = pycurl.Curl()
    buffer = BytesIO()
    c.setopt(pycurl.URL, url)
    c.setopt(pycurl.POST, True)
    c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json'])
    c.setopt(pycurl.TIMEOUT, 10)
    c.setopt(pycurl.WRITEFUNCTION, buffer.write)
    c.setopt(pycurl.POSTFIELDS, data)
    if iface:
        c.setopt(pycurl.INTERFACE, iface)
    c.perform()

    # Json response
    resp = buffer.getvalue().decode('UTF-8')

    #  Check response is a JSON if not there was an error
    try:
        resp = json.loads(resp)
    except json.decoder.JSONDecodeError:
        pass

    buffer.close()
    c.close()
    return resp


if __name__ == '__main__':
    dat = {"id": 52, "configuration": [{"eno1": {"address": "192.168.1.1"}}]}
    res = curl_post("http://127.0.0.1:5000/network_configuration/", json.dumps(dat), "wlp2")
    print(res)

我让问题悬而未决,希望有人可以使用给出答案requests



 类似资料:
  • 问题内容: 当我通过套接字发送正常的HTTP请求时,服务器不会以OK响应进行响应。我从Firefox复制了HTTP标头。这是代码: 但是,这是我收到的回复: 我知道我可以使用来做到这一点,但是当我手动发送HTTP请求时,服务器为什么不识别HTTP请求? 问题答案: 两件事情: 您应该使用而不是将条目打印到单独的行。 HTTP请求应以空白行(link)结尾。所以加

  • 我正在尝试让客户端/服务器程序通过ssl交换http消息。首先,我创建了使用DefaultHttpRequest成功交换http请求的客户端和服务器程序。发送请求的代码如下所示: 客户端管道工厂包含以下内容: 服务器管道工厂包含以下内容: .... 到目前为止一切顺利。客户端发送请求,服务器接收并解码请求。使用正确的数据调用我的处理程序上的messageReceived方法。 为了启用 SSL,我

  • 问题内容: 在或中,是否有一个选项可以指定网络接口来发起连接? 编辑:在OS级别的AFAIK,我可以指定地址级别,或将负载平衡到路由表中。但是我软件中接口选择的方式不止于此,我想知道我是否可以在代码中做到这一点。 问题答案: 节点具有以下内置功能: http://nodejs.org/api/net.html#net_net_connect_options_connectionlistener h

  • 通过网络来发送CAN信息 一旦你能够通过远程漏洞利用来发送CAN信息,那么弄清楚发送哪些信息来影响其物理系统就是小菜一碟了。先前,我们用了整年的时间来弄明白应该向福特和丰田汽车发送哪些信息,所以我们也没有着急也在吉普车上做这样的工作。不过,我们确实也做了少量的一些工作来证明汽车的哪些物理系统是可以通过远程漏洞利用来控制,但是,这并不是我们研究的主要目的。 常规的CAN信息 正如在先前的研究中讨论过

  • 问题内容: 似乎urllib2默认发送HTTP / 1.1请求? 问题答案: urllib2在后台使用httplib进行连接。您可以将其更改为http 1.0,如下所示。我已包含我的apache服务器访问日志,以显示http连接如何更改为1.0 码 访问日志

  • 问题内容: 尝试了所有可能的方法后,找不到解决该问题的方法。我有一台具有两个接口eth0和eth2的机器。我希望所有ff38:40:2001:dead:beef:cafe :: // 96数据包都在eth2上传输。我尝试了以下所有操作,但在执行ping6 ff38:40:2001:dead:beef:cafe :: 1时,数据包始终在eth0上进行。我尝试过但没有奏效的事情(即,数据包在eth0上