换ip软件,代理ip软件,更改ip地址-智游代理

在线咨询

800821111 售前客服
在线客服,实时响应

800821111 售前客服
在线客服,实时响应

大客户经理
2110220233

微信客服

您的位置: 首页 > 新闻资讯 > 代理服务器 > 正文

ADSL拨号代理服务器实现HTTP代理的搭建过程

发布时间:2019年09月20日 来源:智游代理 www.zhiyoudaili.com

最近做一个项目时,发现购mai的厂商的代理似乎被识别了,总是拿不到正确的响应。于是尝试自己搭建了一个ADSL代理实现HTTP代理。


ADSL拨号代理:电信宽带每一次拨号后会更换IP,利用这一点在IP更换后将新的IP存入到代理池中。


ADSL拨号代理服务器实现HTTP代理的搭建过程


代理的搭建过程分为以下几步:


(1)购买代理服务器,笔者选择天下数据的;


(2)远程客fu给的代理服务器,拨号成功后,安装必要的软件;


(3)安装及启动TinyProxy搭建代理;


(4)安装python/编写HTTP代理池脚本;


一购买代理服务器


先跟客fu沟通一下你要买什么类型的服务器,有混播/单地区类型,经过测试:混播服务器换IP质量很差,单地区类型的服务器虽然IP总是在同一个地区,但比较稳定。我的项目对于IP地区也没有要求,因此采用了单地区的服务器。购买后,客fu会提供一些服务器信息供你连接,以后连接这台ADSL服务器都靠这个来连:


二远程服务器:拨号


使用xshell工具远程服务器,此时远程后,服务器是连不上外网的,需要拨号后才能连外网。我购mai的服务器是通过pppoe来拨号的,首先运行pppoe-setup,开始拨号:


(1)首先出现了LOGIN NAME Enter your Login Name:——输入客服提供的服务器信息中的宽带账户名;


(2)输入网路介面卡,默认为eth0——这个我没管,用的默认;


(3)是否限制连线时长?长时间连接后是否自动中断连接,默认为否——这个直接enter跳过不管;


(4)输入dns服务器地址——这个可以去网上搜一搜常用的DNS服务器地址,我配置的是114.114.114.114(有时候这个dns会出问题。修改为223.5.5.5也OK)


(5)输入备用dns服务器地址——我配置的8.8.8.8


(6)输入连线密码——这个就输入客服给的宽带密码就OK


(7)重复输入连线密码——重复上一步输入的密码


(8)是否允许一般用户来操作DSL连接,默认为是——这个enter跳过用默认就行


(9)开机设置防火墙——这个输入0就好


(10)是否开机自动拨号——输入yes


(11)确认配置无误?——输入y确认无误。如果有误输入n重新填写


以上配置配好之后,此时还不能连网,需要执行命令连网断网。我买的这台服务器的命令是:


连接网络:/sbin/ifup ppp0,


断开连接:/sbin/ifdown ppp0,


查看网络状态:/sbin/pppoe-status


连接网络:adsl-start,


断开连接:adsl-stop,


如下图可以看到拨号成功,可以ping通外网:


注意:


(1)有时候采用adsl-stop/adsl-start命令后会拨号失败,连不上外网,所以我采用了客服给的ifdown ifup拨号命令。


(2)拨号成功后可以ping一个ip和一个域名来测试一下网络连接状况。如果ping不通已知在网的IP且ping不通域名,则可能是连不上网络。如果是ping得通IP却ping不通域名,则可能是DNS服务器配置出错导致,修改DNS配置方法可参考该链接下的说明:https://www.cnblogs.com/dadadechengzi/p/6670530.html


三TinyProxy代理搭建


1.安装TinyProxy


yum install-y epel-release


yum update-y——升级yum,可能会等很长一段时间


yum install-y tinyproxy


2.配置TinyProxy


(1)vi/etc/tinyproxy/tinyproxy.conf修改两处配置:端口号和允许连接该代理的IP白名单:


上图中,默认用8888端口作为代理端口,可以修改为你用作代理端口的端口号;


允许访问该代理端口的IP,默认为只有本机可以使用该代理,把这行注释掉可以使所有IP都可以使用该代理。


(2)配置完后,重启TinyProxy


systemctl enable tinyproxy.service


systemctl restart tinyproxy.service


防火墙开放你的配置的代理端口:


iptables-I INPUT-p tcp--dport 8888-j ACCEPT


3.验证TinyProxy


在另一台主机上运行以下命令检查是否用了代理:


curl-x代理服务器IP地址:代理端口httpbin.org/get


上图中访问httpbin.org/get得到本地IP为119.23.xx.x,通过代理端口访问该地址,得到的IP地址为114.104.xx.x,这说明代理搭建成功。


四安装python及编写脚本


1.安装python


下面是我的安装脚本,我每次都是直接用这个脚本来自动安装。


#!/usr/bin/env bash


yum-y install wget zlib zlib-devel openssl-devel gcc make


wget-P/usr/local/src/https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz


tar-xzvf/usr/local/src/Python-3.6.5.tgz


cd Python-3.6.5


./configure--prefix=/usr/local--with-ssl


make


make altinstall


make clean


cd../


rm-rf Python-3.6.5*


ln-s/usr/local/bin/python3.6/usr/bin/python3


ln-s/usr/local/bin/pip3.6/usr/bin/pip3


pip3 install--upgrade pip


python3-V&&pip3-V


2.编写更新代理的脚本


由于ADSL拨号服务器拨号后,IP已经变化为新的IP,这时候要通知其他使用IP者新的IP地址是什么,这就需要有一个接口或者缓存供其调用、存储变化后的IP。我这里采用redis来缓存。


import re,time,requests


from requests.exceptions import ConnectionError,ReadTimeout


#coding=utf-8


#拨号间隔


ADSL_CYCLE=60*60*2


#拨号出错重试间隔


ADSL_ERROR_CYCLE=5


#ADSL命令


ADSL_BASH='/sbin/ifdown ppp0;/sbin/ifup ppp0'


#代理运行端口


PROXY_PORT=8888


#拨号网卡


ADSL_IFNAME='ppp0'


#代理池键名


PROXY_KEY='adsl'


#测试URL


TEST_URL='http://www.baidu.com'


#测试超时时间


TEST_TIMEOUT=20


#API端口


API_PORT=8000


#coding=utf-8


import re


import time


import requests


from requests.exceptions import ConnectionError,ReadTimeout


from redis import StrictRedis


import platform


if platform.python_version().startswith('2.'):


import commands as subprocess


elif platform.python_version().startswith('3.'):


import subprocess


else:


raise ValueError('python version must be 2 or 3')


class Sender():


def get_ip(self,ifname=ADSL_IFNAME):


"""


获取本机IP


:param ifname:网卡名称


:return:


"""


(status,output)=subprocess.getstatusoutput('ifconfig')


if status==0:


pattern=re.compile(ifname+'.*inet.*(\d+\.\d+\.\d+\.\d+).*netmask',re.S)


result=re.search(pattern,output)


if result:


ip=result.group(1)


return ip


def test_proxy(self,proxy):


"""


测试代理


:param proxy:代理


:return:测试结果


"""


try:


response=requests.get(TEST_URL,proxies={


'http':'http://'+proxy,


'https':'https://'+proxy


},timeout=TEST_TIMEOUT)


if response.status_code==200:


return True


except(ConnectionError,ReadTimeout):


return False


def remove_proxy(self):


"""


移除代理


:return:None


"""


redis=StrictRedis(host='xxx.xx.xx.x',port=26379,password='xxxxxx',db=0)


redis.hdel('proxy',PROXY_KEY)


print('Successfully Removed Proxy')


def set_proxy(self,proxy):


"""


设置代理


:param proxy:代理


:return:None


"""


rediscli=StrictRedis(host='xxx.xx.xx.x',port=26379,password='xxxxxx',db=0)


if rediscli.hset('proxy',PROXY_KEY,proxy):


print('Successfully Set Proxy',proxy)


def adsl(self):


"""


拨号主进程


:return:None


"""


while True:


print('ADSL Start,Remove Proxy,Please wait')


try:


self.remove_proxy()


except:


pass


(status,output)=subprocess.getstatusoutput(ADSL_BASH)


if status==0:


print('ADSL Successfully')


ip=self.get_ip()


if ip:


print('Now IP',ip)


print('Testing Proxy,Please Wait')


proxy='{ip}:{port}'.format(ip=ip,port=PROXY_PORT)


if self.test_proxy(proxy):


print('Valid Proxy')


self.set_proxy(proxy)


print('Sleeping')


time.sleep(ADSL_CYCLE)


else:


print('Invalid Proxy')


else:


print('Get IP Failed,Re Dialing')


time.sleep(ADSL_ERROR_CYCLE)


else:


print('ADSL Failed,Please Check')


time.sleep(ADSL_ERROR_CYCLE)


if __name__=='__main__':


sender=Sender()


sender.adsl()


3.代理池中的代理检查


打开redsi可以看到对应的db中已经有相应的代理。

转载注明来自:智游代理IP http://www.zhiyoudaili.com/

相关文章内容简介

1 QQ影像如何设置代理服务器

日常生活中,使用QQ影像怎么设置代理服务器,有时候会遇到QQ影像怎么设置代理服务器的问题。那么,QQ影像如何设置代理服务器?请看以下详细步骤。第一步,点击桌面上的QQ影像的快捷方式第二步,进入QQ影像的主界面第三步,点击右上角的按钮第四步,继续点击图示设置按钮第五步,进入设置界面,点击网络设置第六步,点选图示代理下拉框选项第七步,选择使用浏览器代理选项,点击确定,即成功设置代理服务器... [阅读全文]

2 360杀毒如何使用脚本设置代理服务器

360杀毒如何使用脚本设置代理服务器?下面整理了图文教程,希望对你有帮助!一、命令格式请在Windows的“运行”输入框中输入以下命令:360sd.exe/proxy/hip:代理服务器IP地址/hport:代理服务器端口号例如,代理服务器IP地址为192.168.0.1,端口为8080,则可以采用如下命令行指令进行设置:360sd.exe/proxy/hip:192.168.0.1/hport:8080如要取消代理服务器设置,请运行如下的指令:360sd.exe/proxy/delinfo:1二、设置代理服务器的VBS脚本网络管理员可以从这里下载我们的示例VBS脚本,根据您的网络环境进行修改后下发到各个客户端电脑执行,进行代理服务器设置。脚本分为“设置代理”和“取消代理”两个,当客户端不再需要通过代理服务器上网时,可将“取消代理.vbs”分发到客户端执行,取消代理服务器设置。三、操作示例1、设置代理服务器客户端运行“设置代理.VBS”脚本,或者在Windows“运行”对话框里直接输入命令:如果是在Windows 7操作系统下,您可能会看到“用户... [阅读全文]

热门标签

推荐阅读

  1. 28

    2018-11

    反向代理服务器与内容服务器的关系

    大家都知道,代理服务器可以充当服务器的替身,如果你的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。

  2. 29

    2019-06

    如何在网上隐藏自己的IP地址

    在某些场合(例如论坛发贴时)有些网友希望能隐藏自己的IP地址,以免IP被记下,为安全起见,QQ聊天时也不希望别人知道自己的IP……可是如何在网上隐藏自己的IP地址呢?告诉你,方法很简单,

  3. 02

    2018-11

    代理服务器在商用领域的应用

    除了网友普遍使用的科学上网之外,在商用领域,代理服务器通常应用在两大应用场景之下:提高访问速度和隐藏真实IP,免受攻击。

  4. 14

    2018-11

    如何配置jvm的代理服务器

    随着现在社会的境界快速发展,网络的发展也是日新月异,经济社会逐渐走向了信息社会,网络社会。网络渗透到人们的生活和工作的方方面面,代理服务器也成为了人们生活

  5. 27

    2018-11

    浅谈代理服务器

    ​对于局域网内的私有 IP 地址的主机,想要访问外网,除了使用工作在网络层的 NAT 技术,也可以使用工作在应用层的代理服务器,典型的有 Http 代理;Socks 代理;VPN 代理。

  6. 29

    2018-11

    什么是代理服务器?正向代理和反向代理有什么区别

    ​客户端访问数据的时候,不会直接与目标服务器进行连接,而是所有的请求都发送到代理(Proxy)服务器,然后代理服务器会去根据你的请求去访问相应的服务器