Para muitas APIs (a maioria das que já vi), a limitação de rateamento é uma função das suas credenciais de chave de API ou OAuth. (Google, Twitter, NOAA, Yahoo, Facebook, etc.) A boa notícia é que você não precisará falsificar seu IP, basta trocar as credenciais, pois elas atingem o limite de taxa.
Um pouco de autopromoção vergonhosa aqui, mas escrevi um pacote python especificamente para lidar com esse problema.
https://github.com/rawkintrevo/angemilner
https://pypi.python.org/pypi/angemilner/0.2.0
Requer um daemon mongodb e, basicamente, você cria uma página para cada uma de suas chaves. Então você tem 4 endereços de e-mail, cada um com uma chave separada atribuída. Ao carregar a chave, você especifica o máximo de chamadas por dia e o tempo mínimo entre os usos.
Carregar chaves:
from angemilner import APIKeyLibrarian
l= APIKeyLibrarian()
l.new_api_key("your_assigned_key1", 'noaa', 1000, .2)
l.new_api_key("your_assigned_key2", 'noaa', 1000, .2)
Então, quando você executa o seu raspador, por exemplo, a API do NOAA:
url= 'http://www.ncdc.noaa.gov/cdo-web/api/v2/stations'
payload= { 'limit': 1000,
'datasetid': 'GHCND',
'startdate': '1999-01-01' }
r = requests.get(url, params=payload, headers= {'token': 'your_assigned_key'})
torna-se:
url= 'http://www.ncdc.noaa.gov/cdo-web/api/v2/stations'
payload= { 'limit': 1000,
'datasetid': 'GHCND',
'startdate': '1999-01-01' }
r = requests.get(url, params=payload, headers= {'token': l.check_out_api_key('noaa')['key']})
portanto, se você tiver 5 chaves, l.check_out_api_key
retornará a chave que menos utiliza e aguarda o tempo suficiente para que ela seja usada novamente.
Por fim, para ver com que frequência suas chaves foram usadas / uso restante disponível:
pprint(l.summary())
Eu não escrevi isso para R, porque a maioria das raspagens é feita em python (a maioria das minhas raspagens). Pode ser facilmente portado.
É assim que você pode tecnicamente contornar a limitação de taxa. Eticamente ...
ATUALIZAÇÃO O exemplo usa a API do Google Places aqui