首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法从不提供开放API的网站/应用程序中检索数据?

有没有办法从不提供开放API的网站/应用程序中检索数据?
EN

Stack Overflow用户
提问于 2019-07-05 03:36:50
回答 1查看 57关注 0票数 0

比方说,我正在构建一个应用程序,用户根据它的UPC代码搜索衬衫。申请的工作是在其他零售商那里找到那件衬衫。零售商A有一个API,可以很容易地用于定位产品。然而,零售商B没有向开发人员开放的API。

开发人员将如何处理零售商B?

我想出的想法是:

  • 使用无头浏览器加载零售商B的网站,执行搜索,并抓取网页。(听起来很糟糕)
  • 使用无头浏览器加载零售商B的网站,执行搜索,拦截网络流量。(更好,但还是不太好)

以前有没有人遇到过这种情况,或者是否有人知道现有的技术或方法来解决这个问题?我从未理解过在不使用API的情况下如何处理数据检索。

EN

回答 1

Stack Overflow用户

发布于 2019-07-08 15:16:30

下面是我在php中使用curl做的一些事情。它应该能帮你开始。

代码语言:javascript
运行
复制
$url = 'https://newjersey.xxxxxx.net/login';
$cookie="cookie.txt";

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_VERBOSE, true);

$result = curl_exec ($ch);
preg_match('/meta content="([^"]+)" name="csrf-token"/', $result, $matches);
$token = $matches[1];
$creds['authenticity_token'] = $token;

print "login page with token $token\n";

curl_setopt ($ch, CURLOPT_URL, 'https://newjersey.xxxxx.net/auth/identity/callback');
curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query($creds));
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);

一旦登录,您就可以使用regex来获取正在寻找的数据。

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

https://stackoverflow.com/questions/56896258

复制
相关文章

相似问题

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