在Lambda中使用AWS IP不能成功绕过CloudFlare以防止被视为机器人。此外,AWS IP也经常被列入黑名单。因此,建议使用代理IP来进行网络爬虫。
以下是使用Python的Requests模块和代理IP的示例代码。请确保已安装Requests和BeautifulSoup库。
import requests
from bs4 import BeautifulSoup
def lambda_handler(event, context):
# 设置代理IP及端口号,也可以在AWS Secrets Manager中储存
proxy = {'http': 'http://代理IP:端口号', 'https': 'http://代理IP:端口号'}
# 爬取目标网站
target_url = 'https://目标网站.com'
response = requests.get(target_url, proxies=proxy, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(response.text, 'html.parser')
# 处理爬取的数据
data = soup.find_all('div', {'class': 'example'})
return {
'statusCode': 200,
'body': data
}
此代码示例中,我们在Lambda中使用代理IP,而不使用AWS IP,来进行网络爬虫。在代理IP中,您需要替换“代理IP”和“端口号”为您的实际代理IP和端口号。
还可以通过配置反向代理来解决此问题。例如,使用nginx作为反向代理,从而在AWS IP和CloudFlare之间引入中间层。这将确保AWS IP不会被视为机器人并且不会被列入黑名单。