如何使用带有CURL的旋转代理API和代理列表进行数据挖掘

当许多人想到网络代理时,就会想到边界非法活动。垃圾邮件搜索引擎,黑帽SEO和4chan黑客所造成的声誉不好。当代理与DDOS攻击和垃圾邮件相关联时,很难公开谈论它们。

但是,代理有很多合法用途,其中之一就是数据挖掘。Web上挤满了很棒的数据资源,但是其中许多隐藏在需要发出请求的大门后面。当然,其中一些人在这些门口放置了收费墙以赚钱。其他人只是将它们用作过滤流量以防止访问过多的一种方式。

这些门是每个数据挖掘者的祸根。您需要从可公开访问的数据库中获取大量数据。您尝试访问它,前十二个左右的请求可以正常工作。然后,您会发现页面超时或由于速率限制和过度使用禁令而导致请求被退回。


避免IP和帐户禁止

当这样的服务器禁止用户过度使用时,要么是帐户禁止,要么是IP禁止。帐户禁令很难处理。毕竟,您需要创建一个新帐户并跳过所有步骤以进行验证。

我不建议尝试使用代理方法来解决此问题,尽管如果您有一个脚本来填写和验证配置文件,则可以很容易地做到这一点。无论如何,过多的帐户创建和使用顺序很可能导致IP禁令。

IP禁令显然可以阻止您用于连接Internet的IP地址。如果您想解决这个问题,则需要从其他IP地址访问有问题的网站。这就是Web代理的用武之地。

我确定您知道,Web代理的要点是通过第三方服务器来对流量进行匿名处理。这就像使用虚拟助手打电话要求外卖,或使用司机将您从一个地方带到另一个地方。您将流量请求发送到代理,代理将其转发,它获取结果并将其发回给您。

速率限制和使用限制

以这种方式使用代理存在一些问题。一方面,公共免费代理列表通常具有速率限制或使用限制,通常与带宽限制并存。

如果您要发出很多小请求或几个大请求,那么您的操作可能会在整个过程中超时。如您所想,这非常令人沮丧,尤其是在尝试完成无法轻松恢复的单个大型请求时。

某些代理还会在iframe中呈现您的内容,或在大约三分之一的请求中使用插页式广告,以赚钱。根据您用于收集数据的自动系统,这可能会添加垃圾字段或破坏脚本。

使用代理服务器也存在所有常见问题,代理服务器几乎总是位于国外。这增加了请求的延迟,使您的操作花费了更长的时间。众所周知,代理是善变的,容易丢弃请求,所有这些都会引起问题。

相关:如何避免代理被禁止或阻止。


反向连接代理API和专用代理

使用IP旋转API通过CURL进行数据挖掘

现在,越来越多的旋转代理提供商进入代理市场,其中许多反向连接代理提供商都提供了住宅代理网络,就像Tor网络提供了您的p2p Internet连接,代理提供商为您提供了网关服务器或API一样访问他们的代理网络。

阅读更多:Backconnect代理指南:Backconnect代理如何工作?

带有CURL的API示例

  • 样本使用Luminati.io
<?php
echo 'To enable your free eval account and get CUSTOMER, YOURZONE and '
    .'YOURPASS, please contact [email protected]';
$username = 'lum-customer-estvpnserve-zone-zone4-route_err-pass_dyn';
$password = 'qigxme6kr73n';
$port = 22225;
$user_agent = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36';
$session = mt_rand();
$super_proxy = 'servercountry-CA.zproxy.lum-superproxy.io';
$curl = curl_init('http://lumtest.com/myip.json');
curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_PROXY, "http://$super_proxy:$port");
curl_setopt($curl, CURLOPT_PROXYUSERPWD, "$username-country-us-dns-local-session-$session:$password");
$result = curl_exec($curl);
curl_close($curl);
if ($result)
    echo $result;
?>

我们的评论中了解Luminati代理的性能。

  • 样本使用oxylabs.io
# In this example a query to `example.com` is performed from a random IP address from Munich, Germany.

<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$country = 'DE';
$city = 'munich';
$proxy = 'pr.oxylabs.io:7777';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username-cc-$country-city-$city:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>

我们的评论中了解Oxylabs代理的性能表现。

  • 立即选择最佳的旋转住宅代理!

使用专用代理列表通过CURL检索数据

这是CURL和PHP一起解决问题的地方。在这种情况下,您要做的是设置一个脚本,该脚本可以轮流浏览列表中的各种代理。您有一个请求列表,一个代理列表和一个目标站点。您从代理A发出请求A,然后从代理B发出请求B,依此类推。在某个时候,例如请求L,您循环回到代理A,因为请求A已经完成了一段时间。

尽管这些是专用代理(固定IP:端口代理列表)。这样做的想法是要有一个代理列表,以更有机,低费率的方式处理您的请求。在数据库站点上,似乎有十几个用户正在发出正常请求。这不仅会分配您要放在数据库上的请求的负载;这也大大减少了处理您的请求所需的时间。

这样可以将负载分配到多个IP地址中,因此要禁止所有IP地址就更困难了。如果确实收到禁令,则只需在列表中添加另一个代理即可将其替换。您的收割工作将很快完成,您可以不理会糟糕的数据库,而只是想着它在生活中的作用。

私人代理的好处(与共享代理/公共)

专用代理列表可缓解许多此类问题。一方面,您通常需要付费才能访问代理,因此这些代理是干净的-也就是说,它们不必在数据流中添加广告即可赚钱。它们的体积较小,可以支持更一致的吞吐量。您将拥有更少的超时,更少的丢失请求和更少的延迟。

当然,这只能减轻代理问题。您仍然对要收获的网站的IP禁令有疑问。您可以在每次被禁止时从一个代理服务器跳到另一个代理服务器,但这很繁琐。数据挖掘需要尽可能多的自动化,因为真正的乐趣始于分析而不是收获。

尝试的示例脚本

正如我所说的,我喜欢用PHP和CURL编写的特定脚本。该脚本允许您使用代理地址填充文件并提交请求。它还自动包含重试逻辑,因此当请求失败时,它会重试,而不是挂起或跳至下一个请求。它的编程方式出奇的高效,因此它也不会使CPU过载。

如果您使用的是Mac OS或Linux(Posix系统),则可以直接运行脚本。Windows系统将需要一个PHP解释器来运行它。您可以在GitHub页面的自述文件中查看下载文件的特定用法示例。

如果要执行比下载示例文件更高级的操作,则需要添加一个小脚本来运行以发出该请求。你自己一个人。

  • 如何找到可靠且有效的公共代理?
  • 在哪里可以买到便宜的共享代理?
  • 如何旋转IP地址?