Python: CGI-программа хочет знать IP-адрес вызывающей веб-страницы - PullRequest
5 голосов
/ 12 августа 2011

Я новичок в программировании на Python.

Я застрял на том, что должно быть простой процедурой. У меня есть небольшая и простая программа на Python, которая называется веб-страницей как CGI-программа.

Все, что я хочу сделать, это извлечь IP-адрес из полей заголовка HTTP. Например, в PHP это будет значение $_SERVER['REMOTE_ADDR'].

Я заплатил свои взносы, выполнив поиск, и обнаружил, что мне нужно использовать web.ctx.ip, но когда я использую этот бит в коде, возникает исключение. Мне, вероятно, нужно импортировать что-то. Я пробовал следующий отдельный импорт без успеха:

import web
import webapi as web

Буду признателен за полный фрагмент кода, который демонстрирует, что мне нужно импортировать. Моя программа Python CGI работает на компьютере под управлением Linux, на котором установлена ​​базовая версия Python 2.4.3. Нужно ли устанавливать что-то еще?

Ответы [ 2 ]

6 голосов
/ 12 августа 2011

С здесь :

# When run as a cgi script, this will print the client's IP address.

import cgi
import os

print "Content-type: text/html"
print ""

print cgi.escape(os.environ["REMOTE_ADDR"])

Поиск был "python cgi get ip address", и это был первый результат. Этот ответ предназначен для общего Python CGI, если вы используете какой-то другой интерфейс / библиотеку, то он может отличаться Однако, как вы можете видеть, это точный аналог версии PHP.

1 голос
/ 28 октября 2018

Пример выше работал отлично для меня.Я добавил немного больше для локального тестирования.Мне пришлось долго искать этот пример, так что "спасибо!"

import cgi
import os

def f_get_ipaddress():
    try:
        ipaddress = cgi.escape(os.environ["REMOTE_ADDR"])
    except:
        ipaddress = "127.0.0.1"

    return ipaddress

print "Content-type: text/html"
print ""

ipaddress = f_get_ipaddress()

print ipaddress
...