Web scraping 动态更改IP地址?

Web scraping 动态更改IP地址?,web-scraping,ip,web-crawler,scrapy,dynamic-ip,Web Scraping,Ip,Web Crawler,Scrapy,Dynamic Ip,考虑到这一点, 我想经常抓取网站,但我的IP地址在某一天/限制后被阻止 那么,如何动态更改我的IP地址或其他想法呢? 试试VPN。Hidemyas.com是一个免费、简单的选择 借另一台电脑 使用的方法将使用两个组件,随机代理和旋转代理中间件 修改DOWNLOADER\u middleware,如下所示。您必须在设置.py中插入新组件: DOWNLOADER\u中间件={ 'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware':90

考虑到这一点, 我想经常抓取网站,但我的IP地址在某一天/限制后被阻止

那么,如何动态更改我的IP地址或其他想法呢?

  • 试试VPN。Hidemyas.com是一个免费、简单的选择
  • 借另一台电脑
使用的方法将使用两个组件,
随机代理
旋转代理中间件

修改
DOWNLOADER\u middleware
,如下所示。您必须在
设置.py
中插入新组件:

DOWNLOADER\u中间件={
'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware':90,
“tutorial.randomproxy.randomproxy”:100,
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware':110,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware':无,
“tutorial.spider.rotate\u useragent.rotateUserAgent”:400,
}
随机代理 你可以用。该组件将使用列表中的随机代理来处理碎片请求,以避免IP禁令并提高爬网速度

您可以通过快速的internet搜索建立代理列表。根据请求的url格式复制
list.txt
文件中的链接

用户代理的轮换 对于每个scrapy请求,将使用您预先定义的列表中的随机用户代理:

类RotateUserAgentMiddleware(UserAgentMiddleware):
定义初始化(self,用户代理=“”):
self.user\u agent=user\u agent
def过程_请求(自我、请求、蜘蛛):
ua=random.choice(self.user\u agent\u列表)
如果ua:
request.headers.setdefault('User-Agent',ua)
#在此处添加所需的日志消息。
蜘蛛日志(
u'User-Agent:{}{}'。格式(request.headers.get('User-Agent'),request),
级别=log.DEBUG
)
#默认的用户代理列表由chrome、firefox、Mozilla、opera和netscape组成
#有关更多用户代理字符串,请参见http://www.useragentstring.com/pages/useragentstring.php
用户\代理\列表=[
“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.1(KHTML,类似Gecko)Chrome/22.0.1207.1 Safari/537.1”,
“Mozilla/5.0(X11;CrOS i686 2268.111.0)AppleWebKit/536.11(KHTML,类似Gecko)Chrome/20.0.1132.57 Safari/536.11”,
“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/536.6(KHTML,类似Gecko)Chrome/20.0.1092.0 Safari/536.6”,
“Mozilla/5.0(Windows NT 6.2)AppleWebKit/536.6(KHTML,类似Gecko)Chrome/20.0.1090.0 Safari/536.6”,
“Mozilla/5.0(Windows NT 6.2;WOW64)AppleWebKit/537.1(KHTML,类似Gecko)Chrome/19.77.34.5 Safari/537.1”,
“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/536.5(KHTML,类似Gecko)Chrome/19.0.1084.9 Safari/536.5”,
“Mozilla/5.0(Windows NT 6.0)AppleWebKit/536.5(KHTML,如Gecko)Chrome/19.0.1084.36 Safari/536.5”,
“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/536.3(KHTML,类似Gecko)Chrome/19.0.1063.0 Safari/536.3”,
“Mozilla/5.0(Windows NT 5.1)AppleWebKit/536.3(KHTML,类似Gecko)Chrome/19.0.1063.0 Safari/536.3”,
“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_8_0)AppleWebKit/536.3(KHTML,类似Gecko)Chrome/19.0.1063.0 Safari/536.3”,
“Mozilla/5.0(Windows NT 6.2)AppleWebKit/536.3(KHTML,如Gecko)Chrome/19.0.1062.0 Safari/536.3”,
“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/536.3(KHTML,类似Gecko)Chrome/19.0.1062.0 Safari/536.3”,
“Mozilla/5.0(Windows NT 6.2)AppleWebKit/536.3(KHTML,类似Gecko)Chrome/19.0.1061.1 Safari/536.3”,
“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/536.3(KHTML,类似Gecko)Chrome/19.0.1061.1 Safari/536.3”,
“Mozilla/5.0(Windows NT 6.1)AppleWebKit/536.3(KHTML,如Gecko)Chrome/19.0.1061.1 Safari/536.3”,
“Mozilla/5.0(Windows NT 6.2)AppleWebKit/536.3(KHTML,类似Gecko)Chrome/19.0.1061.0 Safari/536.3”,
“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/535.24(KHTML,类似Gecko)Chrome/19.0.1055.1 Safari/535.24”,
“Mozilla/5.0(Windows NT 6.2;WOW64)AppleWebKit/535.24(KHTML,类似Gecko)Chrome/19.0.1055.1 Safari/535.24”
]

更多详细信息。

某些VPN应用程序允许您以设定的间隔(例如:每2分钟)自动将IP地址更改为新的随机IP地址。和VPN4ALL软件都支持此功能

如果您使用的是R,您可以通过TOR进行web爬行。我认为TOR每10分钟自动重置一次IP地址(?)。我认为有一种方法可以迫使TOR在较短的时间间隔内更改IP,但这对我不起作用。相反,您可以设置TOR的多个实例,然后在独立实例之间切换(这里您可以找到关于如何设置TOR的多个实例的一个很好的解释:)

之后,您可以在R中执行以下操作(使用独立TOR浏览器的端口和用户代理列表。每次调用“getURL”函数时,都要循环查看端口/用户代理列表)

库(RCurl)

端口您可以尝试使用代理服务器来防止被阻止。有提供工作代理的服务。我所做的最好的尝试是——他们经常检查各种参数的代理

为了从他们那里获得代理,您只需提出以下请求:

https://gimmeproxy.com/api/getProxy
它们将为JSON响应提供所有代理数据,您可以在以后根据需要使用这些数据:

{
  "supportsHttps": true,
  "protocol": "socks5",
  "ip": "179.162.22.82",
  "port": "36915",
  "get": true,
  "post": true,
  "cookies": true,
  "referer": true,
  "user-agent": true,
  "anonymityLevel": 1,
  "websites": {
    "example": true,
    "google": false,
    "amazon": true
  },
  "country": "BR",
  "tsChecked": 1517952910,
  "curl": "socks5://179.162.22.82:36915",
  "ipPort": "179.162.22.82:36915",
  "type": "socks5",
  "speed": 37.78,
  "otherProtocols": {}
}
您可以将其与Curl一起使用:

curl -x socks5://179.162.22.82:36915 http://example.com

关于VPN的警告,请仔细检查它们的条款和条件,因为使用它们会违反它们的用户策略(例如Astrill)。我尝试了一个抓取工具,并锁定了我的帐户(如果你有公共IP)。将它们添加到您的界面上,如果您使用Linux,请使用Iptables切换这些公共IP

两个IP的Iptables示例规则

iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.2

iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.3
如果您有4个IP,则概率将变为0.25

你也可以用c
iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.2

iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.3