如何使用SOCKS5代理服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用SOCKS5代理服务器相关的知识,希望对你有一定的参考价值。
参考技术A一、IE浏览器设置代理服务器IP地址
1、打开IE浏览器,在右上角找到“工具”图标,点击打开,选择“Internet选项”打开。
2、在弹出的窗口中,选择“连接”选项卡,点击下面的“局域网设置”按钮。
3、在弹出的窗口中,勾选“为LAN使用代理服务器(这些设置不用于拨号或VPN连接)”,然后输入代理服务器的地址和端口号。
4、设置好之后,关闭所有窗口,在浏览器中打开百度,输入“IP”,查看一下显示的IP是否与自己设置的相符,如果相符,那就说明设置成功了。
二、360浏览器设置代理服务器IP地址
1、打开360浏览器,在浏览器右上方选择“工具”选项。
2、在下拉列表中选择“代理服务器”、“代理服务器设置”。
3、在弹出的“代理服务器设置”窗口中,输入代理服务器IP地址,可以输入多个代理服务器IP地址,换行隔开,点击“确定”按钮,完成。
三、火狐浏览器设置代理服务器IP地址
1、打开火狐浏览器,点击浏览器右上方的“菜单图标”,选择“选项”。
2、在打开的窗口中,在左侧选择“高级”选项,然后选择“网络”选项卡。
3、在“网络”选项卡下面,选择“设置”按钮。
4、弹出“连接设置”窗口,选择“手动配置代理”,输入代理IP和端口号。
5、在百度中输入“ip”,检查是否设置成功。
四、使用代理服务器注意事项
1、在网上找代理服务器IP地址的时候,要尽量选择靠前的,这样的网上弹窗比较少,也不会携带病毒。
2、代理服务器使用非常的方面,还可以设置,访问哪些网页的时候使用带来服务器,访问哪些网页的时候不适用代理服务器。
3、如果使用代理服务器的话,很有可能出现网速慢的情况,这是正常现象。如果网速特别慢的话,可以更换一个代理服务器IP地址。
4、如果不使用代理服务器的时候,及时把它关闭,换成自己的IP地址。
如何在 python 中创建一个简单安全的 Socks5 代理?
【中文标题】如何在 python 中创建一个简单安全的 Socks5 代理?【英文标题】:How to create a simple and secure Socks5 proxy in python? 【发布时间】:2016-03-04 03:55:12 【问题描述】:几天前,我想构建一个代理,让我可以安全、匿名地连接到网站和服务器。起初,这似乎是一个非常简单的想法,我将创建一个在客户端和代理之间使用 SSL 的 HTTP 代理,然后它将与客户端请求的任何网站/服务器创建一个 SSL 连接,然后将该信息转发给和来自客户端和服务器。我花了大约一天的时间研究和编写可以做到这一点的代码。但后来我意识到有人可能会破坏代理并使用代理必须解密的会话密钥并读取发送到服务器和从服务器发送的数据。
经过更多研究,我似乎需要一个 socks 代理。但是,关于 socks 代理的 python 版本的文档并不多(主要是如何连接到一个)。我能够找到 The PySocks Module 并阅读 Socks.py 文件。创建客户端看起来很棒,但我不知道如何使用它来创建代理。
我想知道是否有人有 socks5 代理的简单示例,或者是否有人可以向我指出一些可以帮助我开始学习和构建的材料?
【问题讨论】:
那里有多个 socks 服务器。查看 pypi.python.org,我输入了furion。我不知道它是否有好处,但是一个开始。那里有非 python 服务器,所以你真的不需要自己动手。 @user2458048 只是想知道您是否设法找到一种方法来创建自己的 socks5 代理服务器,就像我尝试做的一样? 找到this implementation,但还没有检查。 【参考方案1】:我建议使用 requesocks
和 stem
(假设是 Tor)。 The official stem
library is provided by Tor。这是一个基于我编写的刮板的简化示例,它也使用fake_useragent
,所以你看起来像一个浏览器:
import requesocks
from fake_useragent import UserAgent
from stem import Signal
from stem.control import Controller
class Proxy(object):
def __init__(self,
socks_port=9050,
tor_control_port=9051,
tor_connection_password='password')
self._socks_port = int(socks_port)
self._tor_control_port = int(tor_control_port)
self._tor_connection_password = tor_connection_password
self._user_agent = UserAgent()
self._session = None
self._update_session()
def _update_session(self):
self._session = requesocks.session()
# port 9050 is the default SOCKS port
self._session.proxies =
'http': 'socks5://127.0.0.1:'.format(self._socks_port),
'https': 'socks5://127.0.0.1:'.format(self._socks_port),
def _renew_tor_connection(self):
with Controller.from_port(port=self._tor_control_port) as controller:
controller.authenticate(password=self._tor_connection_password)
controller.signal(Signal.NEWNYM)
def _sample_get_response(self, url):
if not self._session:
self._update_session()
# generate random user agent string for every request
headers =
'User-Agent': self._user_agent.random,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-us,en;q=0.5',
# adjust as desired
response = self._session.get(url, verify=False, headers=headers)
return response
在执行此脚本之前,您必须运行 Tor 服务,并且您还必须修改您的 torrc
文件以启用控制端口 (9051)。
如果您从源代码编译 Tor,Tor 会将 torrc 文件放入 /usr/local/etc/tor/torrc
,如果您安装了预构建的软件包,则将其放入 /etc/tor/torrc
或 /etc/torrc
。如果您安装了 Tor 浏览器,请查找
Browser/TorBrowser/Data/Tor/torrc
在 Tor 浏览器目录中(在 Mac OS X 上,您必须右键单击或命令单击 Tor 浏览器图标并选择“显示包内容”,然后 Tor 浏览器目录变为
可见)。
找到torrc
文件后,您需要取消注释相应的行:
ControlPort 9051
## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it.
HashedControlPassword 16:05834BCEDD478D1060F1D7E2CE98E9C13075E8D3061D702F63BCD674DE
请注意,上面的HashedControlPassword
是密码“password”。如果您想设置不同的密码(推荐),请将 torrc
文件中的 HashedControlPassword
替换为 tor --hash-password "<new_password>"
的输出,其中 <new_password>
是您要设置的密码。
一旦您更改了torrc
文件,您将需要重新启动 Tor 以使更改生效(请注意,您实际上只需要发送 Tor 一个 HUP 信号,而不是实际重新启动它)。重新启动它:
sudo service tor restart
我希望这会有所帮助,至少可以帮助您开始寻找您正在寻找的东西。
【讨论】:
感谢您非常彻底的回答,我非常感谢。问题是我真的很想创建自己的代理。由于 tor 是一款非常适合我使用自己的代理的软件,我喜欢自己创建这些东西,以便更好地理解它们。【参考方案2】:您创建一个 python 服务器来侦听端口并侦听 IP 127.0.0.1。当您连接到您的服务器时,您会发送:“www.facebook.com:80”。没有 URL 路径或 http 方案。如果连接失败,您会发送一条失败消息,该消息可能类似于“无法连接到主机的号码”。其中 number 是表示连接尝试失败的特定代码。连接成功后,您发送“200 Connection established”。然后正常发送和接收数据。您不想使用 http 代理,因为它只接受网站流量。
您可能希望为代理服务器使用一个框架,因为它应该处理多个连接。
我多次阅读了一本名为 O'Reilly “在 Python 2020 中使用 Asyncio”的关于 asyncio 的电子书,并且不时地重新阅读以尝试掌握多个连接。我也刚刚开始使用 Flask 搜索解决方案,因为我希望我的代理服务器与网络服务器一起运行。
【讨论】:
以上是关于如何使用SOCKS5代理服务器的主要内容,如果未能解决你的问题,请参考以下文章