现状:

1、网上提供代理IP池的解决方案非常多,价格也有高有低,包天/月/年的都有,品质都要靠自己去尝试。

2、试过之后,发现成本相对高,每月要花200~300元, 所以希望研究一下是否有更性价比高的解决方案

分析思路:

1、网上介绍的ADSL拨号方案,需要到运营商处申请固网宽带,有点麻烦,成本能控制在100左右

2、手机数据卡无限流量方案,一般在40GB流量之后会限速,手机ip地址可以更新,从而走新的公网ip(NAT方案),价格在50左右(手机可以买二手的,200以内)

2.1、运营商提供上网的方案一般是公网IP池共享,手机终端获得内网IP地址,运营商通过NAT方式,让手机最终能上外网;

2.2、当手机终端更换IP地址后,将会重新从公网IP池拿一个ip做NAT,遇到同一个ip的可能性不算大;

设计方案:

1、电脑上的爬取数据程序,走手机路由(华为手机开启USB共享网络)

2、电脑上的其他程序,走办公路由

3、当爬虫程序请求发现ip地址被封杀之后,通过adb shell命令,将手机的ip地址重置,参见博文:  python3 控制安卓手机的飞行模式遇到的问题汇总

python指定请求走指定ip出口,代码如下

#coding=utf-8
import requests,sys,socket
from requests_toolbelt.adapters import source #本机有多个ip地址上网,走指定ip地址出口发起请求
s = requests.Session()
new_source = source.SourceAddressAdapter('192.168.124.20')
s.mount('http://', new_source)
s.mount('https://', new_source)
print(s.get('http://www.baidu.com/'))

其中有个模块(requests_toolbelt), 需要提前下载好

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests_toolbelt

手机启动usb共享网络后,电脑上会出现两条缺省路由,需要操作办公网口,打开tcp/ip协议,高级,编辑默认网关的跃点数为1,重新启用网卡后,跃点数显示为2,优先级已经很高,所有网络请求如果不特殊说明,都会走124网段出去

IPv4 路由表
==================================================
活动路由:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 192.168.42.129 192.168.42.37 10
0.0.0.0 0.0.0.0 192.168.124.1 192.168.124.20 2

  

遇到过的问题:

1、曾经在手机上用启动http代理的方式,由于程序写得比较粗糙,将手机的tcp资源耗光,导致必须重启手机才能恢复(TIME_WAIT 太多)

2、电脑上有多条路由时,担心办公使用的网络会走手机,导致流量承受不住,一下子耗光。想删掉缺省路由中走手机的那一块,结果windows支持不给力,老会出错

3、ADB命令时长会报错,没有好的办法治,除非把脚本挪到手机的python环境去实现

最终效果:

1、代理IP池的成本节省下来, 每月只需要30元的流量费,手机用二手的华为手机

2、网络速度稍慢于有线网络,多个网站可能导致封杀,切换ip地址频繁的情况(无法解决)

2019-12-19 17:44:27 更新新方案

问题:usb经常在跑不到一天的情况下,和电脑失去连接。需要手动恢复,非常影响效率

新解决方案:拿掉usb线,走手机热点

最省钱的爬虫解决方案,比IP代理更划算的更多相关文章

  1. 反爬虫之搭建IP代理池

    反爬虫之搭建IP代理池 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部.可惜加了header请求头,加了cookie 还是被限制爬取了.这时就得祭出IP代理池!!! 下面就是requ ...

  2. python爬虫中的ip代理设置

    设置ip代理是爬虫必不可少的技巧: 查看本机ip地址:打开百度,输入“ip地址”,可以看到本机的IP地址: 本文使用的是goubanjia.com里面的免费ip: 使用时注意要注意传输协议是http还 ...

  3. 【解决方案】IP代理池设计与解决方案

    一.背景 爬虫服务请求量大,为了应对反爬措施,增加爬虫的爬取效率和代理IP使用率,需要设计一个IP代理池,满足以下需求: 定时任务获取第三方代理 及时剔除IP代理池中失效的IP 业务隔离IP 若IP未 ...

  4. python获取ip代理列表爬虫

    最近练习写爬虫,本来爬几张mm图做测试,可是爬到几十张的时候就会返回403错误,这是被网站服务器发现了,把我给屏蔽了. 因此需要使用代理IP.为了方便以后使用,我打算先写一个自动爬取ip代理的爬虫,正 ...

  5. 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池

    前言: 首先表示抱歉,春节后一直较忙,未及时更新该系列文章. 近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集. 这时候 ...

  6. 反反爬虫 IP代理

    0x01 前言 一般而言,抓取稍微正规一点的网站,都会有反爬虫的制约.反爬虫主要有以下几种方式: 通过UA判断.这是最低级的判断,一般反爬虫不会用这个做唯一判断,因为反反爬虫非常容易,直接随机UA即可 ...

  7. Python爬虫之ip代理池

    可能在学习爬虫的时候,遇到很多的反爬的手段,封ip 就是其中之一. 对于封IP的网站.需要很多的代理IP,去买代理IP,对于初学者觉得没有必要,每个卖代理IP的网站有的提供了免费IP,可是又很少,写了 ...

  8. 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用

    第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...

  9. Python 爬虫入门(二)—— IP代理使用

    上一节,大概讲述了Python 爬虫的编写流程, 从这节开始主要解决如何突破在爬取的过程中限制.比如,IP.JS.验证码等.这节主要讲利用IP代理突破. 1.关于代理 简单的说,代理就是换个身份.网络 ...

随机推荐

  1. 百万年薪python之路 -- 内置函数练习

    1.整理今天笔记,课上代码最少敲3遍. 2.用列表推导式做下列小题 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 lst = [["a","b"],[ ...

  2. Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)

    任务:在CENT6.8系统中安装Apache(版本为:httpd-2.4.41) 前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc 理论步骤: 1.检测gcc软件包,如果不存在则进行安装 ...

  3. Unity C#数据持久化与xml

    最近工作需要用到数据持久化,所以在此分享一下,通过查阅资料,数据持久化大体都是通过xml或者json来进行的.unity为我们自定义了数据持久化方法,但是比较局限,还需要自己来完成数据持久化方法. ( ...

  4. 【XSY2484】mex

    Description 给你一个无限长的数组,初始的时候都为0,有3种操作: 操作1是把给定区间[l,r] 设为1, 操作2是把给定区间[l,r] 设为0, 操作3把给定区间[l,r] 0,1反转. ...

  5. [2018-03-08] virtualenv

    virtualenv 的有点 1.使不同应用开发环境独立 2.环境升级不影响其他应用,也不会影响全局的python环境 3.它可以防止系统中出现包管理混乱和版本的冲突 新建    virtualenv ...

  6. AtCoder Grand Contest 038E - Gachapon

    \(\bf Description\) 一个 \(0\) 到 \(n-1\) 的随机数生成器,生成 \(i\) 的概率是 \(A_i/S\) ,其中 \(S=\sum_{i=0}^{n} A_i\) ...

  7. [考试反思]NOIP模拟测试19:洗礼

    []260 []230[]210 []200[8]170[9]160 这套题一般,数据很弱,T1T2暴力都能A,而且都是一些思维题,想不到就爆0. 原因不明,很多一直很强的人在这一次滑铁卢了,于是我个 ...

  8. 使用FinalShell 安装jdk和tomcat流程(Linux系统是centOS7.5)

    本文是作者原创,版权归作者所有.若要转载,请注明出处 我今天刚刚买了一个一年的百度云服务器,85元,还是很便宜的,正好用来练练linux,至于为什么使用FinalShell 而不是xshell,因为F ...

  9. JVM原理速记复习Java虚拟机总结思维导图面试必备

    良心制作,右键另存为保存 喜欢可以点个赞哦 Java虚拟机 一.运行时数据区域 线程私有 程序计数器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是Native方法则为空),是唯一一个没有规定 ...

  10. CentOS7 编码编译安装或卸载http2.4.25 一键脚本

    待完善 CentOS 7测试 哈哈 #!/bin/bash #************************************************************** #Autho ...