Untuk banyak API (yang paling sering saya lihat) ratelimiting adalah fungsi API Key atau kredensial OAuth Anda. (Google, Twitter, NOAA, Yahoo, Facebook, dll.) Kabar baiknya adalah Anda tidak perlu memalsukan IP Anda, Anda hanya perlu menukar kredensial ketika mereka mencapai batas tingkat di sana.
Sedikit promosi diri yang tidak tahu malu di sini tapi saya menulis paket python khusus untuk menangani masalah ini.
https://github.com/rawkintrevo/angemilner
https://pypi.python.org/pypi/angemilner/0.2.0
Ini membutuhkan daemon mongodb dan pada dasarnya Anda membuat halaman untuk masing-masing kunci Anda. Jadi, Anda memiliki 4 alamat email masing-masing dengan kunci terpisah yang ditetapkan. Saat Anda memasukkan kunci, Anda menentukan panggilan maksimum per hari dan waktu minimum antar penggunaan.
Memuat kunci:
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)
Kemudian ketika Anda menjalankan scraper Anda misalnya api 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'})
menjadi:
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']})
jadi jika Anda memiliki 5 kunci, l.check_out_api_key
kembalikan kunci yang paling sedikit menggunakan dan menunggu sampai waktu yang cukup berlalu untuk digunakan lagi.
Akhirnya untuk melihat seberapa sering kunci Anda telah digunakan / sisa penggunaan tersedia:
pprint(l.summary())
Saya tidak menulis ini untuk R karena kebanyakan memo dilakukan dengan python (sebagian besar memo saya). Itu bisa dengan mudah dipindahkan.
Itulah cara Anda secara teknis dapat mengatasi pembatasan tingkat. Secara etis ...
PEMBARUAN Contohnya menggunakan Google Places API di sini