Есть ли способ включить tor в качестве настроек системного прокси через Python в Linux?

Я работаю над проектом, который требует доступа к некоторым веб-сайтам с включенным и отключенным tor и записывает различия в содержании. Я работаю над deepin (это дистрибутив Debian на основе Linux) и использую Python 2.7 для выполнения задачи. Проблема в том, что мне приходится вручную включать/отключать tor и менять настройки системного прокси каждый раз, когда я запускаю скрипт. Теперь я знаю, что могу выполнить команду оболочки из самого Python, чтобы включить tor (запуск службы tor), но я не могу понять, как включить/отключить настройки системного прокси из Python.

Я уже пробовал это, но не повезло.

* дистрибутив Linux на основе Debian

Khizar Amin 28.05.2019 12:00

это не дубликат этого вопроса. Этот вопрос касается HTTP-прокси. Tor - это SOCKS-прокси, к которому вопрос не относится.

Khizar Amin 28.05.2019 14:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
310
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте os.system, чтобы установить нужный прокси.

import os
os.system("export http_proxy = "http://username:Password@Proxy_IP:Port/")

Чтобы отключить, просто используйте

os.system("unset http_proxy")

РЕДАКТИРОВАТЬ

Tor использует SOCKS-прокси. Для socks-прокси используйте

os.system("export socks_proxy = "socks://username:Password@Proxy_IP:Port/")

Проблема в том, что Tor — это не HTTP-прокси, а SOCKS-прокси. Я попытался изменить ваш код на «socks_proxy» вместо «http_proxy», а затем попытался использовать request.session(), чтобы получить мой IP-адрес от httpbin.org/ip, но возвращенный IP-адрес был таким же, как мой исходный IP-адрес, что означает, что запрос не пройти через тор. Я использовал: os.system("export socks_proxy=\"http://:@127.0.0.1:9050/\"")

Khizar Amin 28.05.2019 14:20

@KhizarAmin Я обновляю свой ответ для прокси-сервера socks. То, что вы пробовали для носков, частично верно. Пожалуйста, смотрите правку в ответе для правильной команды.

Divyanshu Srivastava 29.05.2019 08:13
Ответ принят как подходящий

У меня все работает, отпишусь здесь на случай, если у кого-то еще будет такая же проблема:

from selenium import webdriver
import stem.process
from stem import Signal
from stem.control import Controller
from splinter import Browser
proxyIP = "127.0.0.1"
proxyPort = 9050
proxy_settings = {"network.proxy.type":0,
    "network.proxy.socks": proxyIP,
    "network.proxy.socks_port": proxyPort
}
browser = Browser('firefox', profile_preferences=proxy_settings)
driver = browser.driver
driver.get('https://whatismyip.com')

изменение network.proxy.type на 1 сбрасывает настройки прокси. Решение найдено здесь

Другие вопросы по теме