重置 php 服务器浏览器 cookie



我正在使用file_get_html来抓取网站,但是如果我提出很多请求,我就会被"禁止",如果我想重新获得访问权限,我需要单击一些反机器人的东西,它将解锁网站,但仅适用于我执行此操作的浏览器/PC。我的问题是有没有办法在不重新启动路由器的情况下解锁 php 浏览器(也许从另一个浏览器复制 cookie?((以获得另一个 ip 地址(。

原始问题的答案:

我确实有一个我以前研究过的解决方案。 虽然它不是 100% 合法的。但是,您正在执行的操作也不是很合法。所以我认为这可能没问题。

此外,他们根据IP阻止您的反机器人,清除cookie不会绕过任何内容。即使您清除了cookie,您仍然会获得验证码页面。

首先,您知道反机器人网站会提供谷歌验证码吗?

所以你可以制作一个javascript来检测google-recaptchadiv(我的情况是我使用jQuery(,如果检测到gcaptchadiv,那么使用第三方验证码解决API。就我而言,我使用 2captcha -->使用您自己的代理向他们发送验证码 ID(对于 gcaptcha,需要代理,您可以使用 squid 代理服务器托管代理(-->然后他们向您发送 g 响应 -->您将 g 响应发布回网站 -->

解锁价格非常非常便宜,对我来说是负担得起的,所以我认为这是一个很好的解决方案。

由于限制,我无法向您发布我的脚本,但是您可以在他们的网站上找到一些示例。

新编辑:对于您在评论中提出的第二个问题:

您的问题: 所以基本上根据我的理解,我可以得到那个验证码ID(发送到 我自己(并解决它(像 2captcha.com 人一样(然后抓取脚本 将再次工作。我认为这只是基本的 php 和 html 来做到这一点,如果 你有什么提示我很高兴听到。谢谢!

为此,我建议您使用浏览器的内置开发人员工具打开任何具有recaptcha的登录页面,在编写任何代码之前进行一些检查。我个人使用Opera浏览器。

  1. 使用具有验证码的浏览器打开登录页面
  2. 浏览器->右键点击->检查元素->打开网络选项卡
  3. 现在选中复选框"我不是机器人",您将看到两个HTTP POST。 已完成,找到带有 URL 的那个 https://www.google.com/recaptcha/api2/userverify?k=SITE_KEY_HERE , 看看回应部分,你会看到谷歌回复你一个json 对象,类似于{"uvresp":"A_LONG_STRING_HERE_blablablabla", ,} A_LONG_STRING_HERE_blablablabla正是我们所需要的
  4. 现在您在登录名和密码时输入任何内容,按登录并查看 再次在网络上,您不仅会发现用户名和密码,还会发现一对值也被发布到 服务器,即g-recaptcha-response=A_LONG_STRING_HERE_blablablabla.所以每当 出现一个 recaptcha,发布 g-recaptcha-response 将传递 验证。

现在,下面是对代码的一些建议。

对于 PHP 服务器端:

使用 file_get_html 后,检测 recaptcha 中的一些<div>,例如<div class="rc-anchor-content">。 如果检测到验证码,请停止任何抓取并等待答案,显示一个带有要输入g-recaptcha-response输入参数的页面和一个提交按钮。

注意:如果您尝试复制<div class="g-recaptcha">的所有元素并将其显示在您的网站上,您可能会收到"站点密钥"错误错误,因为验证码本身也会检测它的显示位置(url(。但是,如果您使用一些 JavaScript,您可能会欺骗它?(或者你可以尝试 recaptcha 的 none JavaScript 版本?禁用 JavaScript,你会看到一个,不确定它是如何工作的( 2captcha.com 可能已经这样做了,因为我之前在他们的工作线程页面上看到过一个 recaptcha,您可以注册一个 worker 帐户并检查他们的 worker 页面。

对于您需要在桌面上执行的操作:

使用普通浏览器打开目标网站(必须与php浏览器具有相同的IP,可以使用代理(,单击复选框,然后从Google复制json响应。 将此字符串提交到您的PHP服务器,请记住G-response会话仅在3-5分钟内有效,它将过期。

回到PHP浏览器:

php服务器收到了你的g-recaptcha-responsesrting,将其发布到目标网站(不要忘记其他帖子值(如果存在((,取消阻止

最新更新