V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
smallgoogle
V2EX  ›  Python

多拨爬虫自动切换 IP 的例子

  •  
  •   smallgoogle · 2018-11-27 06:12:14 +08:00 · 3810 次点击
    这是一个创建于 2190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做网易云的信息抓取,数据太大了。几十个亿。
    用 HTTP 代理吧,多线程太慢了。所以就用了远程多拨。
    速度还是挺快的。然后就把这个自动切换的脚本放出来。
    也是给自己做个记录吧。
    其实就是调用 win 下自己的那个 V-P-N 拨号。拨远程而已。。

    '''

    import os
    import time

    class VPNHelper(object):
    # VPNName: _vpnIP
    # VPNUsername: _userName
    # VPNPassword: _passWord
    def __init__(self, _vpnIP="代理名称", _userName="多拨账号", _passWord="多拨密码", WinDir=r"C:\windows\system32", RasDialFileName=r'\rasdial.exe'):
    self.IPToPing = _vpnIP
    self._VPNName = _vpnIP
    self._UserName = _userName
    self._PassWord = _passWord
    self._WinDir = WinDir
    self._RasDialFileName = RasDialFileName
    self._VPNPROCESS = self._WinDir + self._RasDialFileName

    def connectVPN(self):  
        try:  
            command = self._VPNName + " " + self._UserName + " " + self._PassWord  
            res = os.system(self._VPNPROCESS + " " + command)  
            return res  
        except:  
            print("VPN 连接失败!")  
    
    def disConnectVPN(self):
        try:
            command = self._VPNName + " /d"
            os.system(self._VPNPROCESS + " " + command)
        except:
            print("VPN 断开失败!")
    
    def Restart(self, waitingTime=2):
        self.disConnectVPN()
        time.sleep(waitingTime)
        res = self.connectVPN()
        return res
    

    # if __name__ == "__main__":
    # vpn = VPNHelper()
    # vpn.Restart()

    '''

    10 条回复    2023-08-29 17:33:08 +08:00
    myhot21
        1
    myhot21  
       2018-11-27 08:03:01 +08:00 via Android
    代理本身并不慢,慢的只是你用了免费代理 ip。
    zhujinlong
        2
    zhujinlong  
       2018-11-27 12:46:36 +08:00
    1. Non-Blocking http
    2. Http client proxy
    你的这个方案太慢了
    gamecreating
        3
    gamecreating  
       2018-11-27 13:58:43 +08:00
    市面上的全国混拨 VPN 没有靠谱稳定的...
    楼主有吗
    techeek
        4
    techeek  
       2018-11-27 15:28:56 +08:00
    可以看下我前段时间吃饱了撑的做的项目
    https://www.techeek.cn/zhihu_64W
    最近更新了下源码,不用代理了,直接抓接口
    Nick2VIPUser
        5
    Nick2VIPUser  
       2018-11-27 16:21:33 +08:00
    借楼问一下各位大佬:
    ```
    我想试验使用宽带拨号 VPS 作《代理 IP 》的效果。
    然后测试了两家拨号 VPS 的机器(配置:1 核 1G30M centOS 系统),有一个同样的问题:
    - 循环 pppoe-stop;pppoe-start 命令执行后,10 次有 3~4 次是没有网的( curl www.baidu.com 不通)
    - 执行 pppoe-stop;pppoe-start 命令后并没有报错和其他提示,ifconfig 也能显示公网 IP
    - 问了客服也问不出个所以然来
    ```
    原帖: https://www.v2ex.com/t/509442#reply0
    smallgoogle
        6
    smallgoogle  
    OP
       2018-11-27 22:00:11 +08:00
    @gamecreating 我有一个。一个月 60,可以两个端拨。很快。
    smallgoogle
        7
    smallgoogle  
    OP
       2018-11-27 22:01:16 +08:00
    @Nick2VIPUser 你大概是 linux 系统。linux 设置了 V-P-N、还需要再设置一下网关。不然 IP 其实是没变动额。
    Themyth
        8
    Themyth  
       2020-12-31 16:50:40 +08:00
    @techeek 请问您这个项目是个可执行的二进制文件么?有其他介绍页面么?打开 url 是直接下载的。。。
    techeek
        9
    techeek  
       2023-08-29 15:51:15 +08:00
    Themyth
        10
    Themyth  
       2023-08-29 17:33:08 +08:00
    @techeek 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 04:52 · PVG 12:52 · LAX 20:52 · JFK 23:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.