繁体   English   中英

如何使用 Python 从 Azure 函数 Http 请求中获取 IP 地址

[英]How do i get Ip Address from Azure Function Http request with Python

我如何使用 python 从这个请求 HTTP 中获取 IP 地址? 我发现了一些使用 C# 的帖子,如下所示: 在 Azure 函数中获取远程 IP 地址

我有这个代码:

import logging
import json
import socket
import getpass
import os
from requests import get
import azure.functions as func
from azure.common.client_factory import    get_client_from_json_dict,get_client_from_cli_profile
from azure.mgmt.sql import SqlManagementClient
from azure.mgmt.resource import SubscriptionClient
from azure.common.credentials import ServicePrincipalCredentials

def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

Myip = get('https://api.ipify.org').text
username = getpass.getuser()

return func.HttpResponse(
         f"List of IPs: {str(Myip)}",
         status_code=200
    )

该图显示了本地请求的结果。

https://i.stack.imgur.com/AkZKm.png

您的请求结果应保存到响应变量中。
在阅读响应正文之前,您可以使用这段代码来获取 IP 地址。 假设您的响应变量称为rsp

print rsp.raw._fp.fp._sock.getpeername()

这里有一个类似的问题 = 如何使用请求库从 http 请求中获取 IP 地址?

更多信息, Python:使用请求模块从 HTTP 请求中获取远程 IP

使用请求 2.22.0更新Python3.8

resp = requests.get('https://www.google.com', stream=True)
resp.raw._connection.sock.getsockname()

您可以从 req 对象中的 x-forwarded-for 标头中获取传入请求的源 IP。 我使用以下代码来记录它:

    if "x-forwarded-for" in req.headers:
        source_ip = req.headers["x-forwarded-for"].split(':')[0]
        logging.info("Incoming request from IP: " + source_ip)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM