首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法到达AWS-lambda功能中的某些网站。

无法到达AWS-lambda功能中的某些网站。
EN

Stack Overflow用户
提问于 2020-01-02 18:55:36
回答 2查看 1.1K关注 0票数 0

我正在创建一个AWS函数来使用JSoup进行一些基本的web抓取。我已经设置了必要的VPC和相应的需求(我认为)。

当我通过AWS测试界面执行lambda函数时,我可以成功地连接到基本的网站,如google/cnn/etc (https://www.google.com/)和(https://www.cnn.com/)。

然而,当我尝试我感兴趣的网站时

https://www.wordplays.com/crossword-solver/egyptian-snake/

我得到一个IO例外:

org.jsoup.HttpStatusException: HTTP错误获取URL。Status=403。

但是,当我在本地(在我的计算机上)使用该URL运行相同的代码时,它能够很好地连接和读取网站。这使我认为我的VPC设置错误,但我不知道为什么我能够到达www.google.com而不是www.wordplays.com

这就是我如何调用jsoup的方式:

代码语言:javascript
复制
Document document = Jsoup.connect(html)
     .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36")
     .get();

我不知道如何前进,因为我不知道为什么我可以成功地连接到一些网站,但另一些。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-03 06:39:12

我猜是网站屏蔽了你。许多网站阻止亚马逊AWS IP地址范围,以保护他们的数据不受网络爬虫的影响。事实上,AWS范围很可能是最阻塞的范围。行为取决于实现,但通常网站返回4xx错误或让请求超时。

您可以尝试使用超出AWS范围的代理服务器。

在一个更大的网站,克服保护可能更复杂,你可能需要一个完整的浏览器这样做。我的同事写了一篇关于这个话题的文章-- https://help.apify.com/en/articles/1961361-several-tips-how-to-bypass-website-anti-scraping-protections。但是在99%的情况下,代理服务器将解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2020-01-03 06:07:09

VPC中的Lambda函数需要子网,因为它没有公共IP地址。

如果您希望您的Lambda功能访问互联网,它需要这样做使用NAT网关*。如果子集只能通过IGW访问internet,Lambda函数将无法与internet通信,因为它没有,也不能接收公共IP地址。

*收费适用

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59568584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档