【问题标题】:Reset php server browser cookies重置 php 服务器浏览器 cookie
【发布时间】:2017-12-21 06:39:28
【问题描述】:

我正在使用 file_get_html 来抓取网站,但如果我提出了很多请求,我会被“禁止”,如果我想重新获得访问权限,我需要点击一些反机器人程序,它会解锁该网站但只是对于我执行此操作的浏览器/PC。我的问题是有什么方法可以解锁 php 浏览器(也许从另一个浏览器复制 cookie?)而无需重新启动路由器(以获取另一个 IP 地址)。

【问题讨论】:

    标签: php html file cookies get


    【解决方案1】:

    原始问题的答案:

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

    还有他们基于 IP 阻止你的反机器人,清除 cookie 并没有绕过任何东西。即使您清除了 cookie,您仍然会得到验证码页面。

    首先你知道反机器人网站提供 google-recaptcha 对吗?

    所以你可以制作一个 javascript 来检测 google-recaptcha div(我的情况是我使用 jQuery),如果检测到 gcaptcha div 然后使用第三方验证码解决 API。在我的情况下,我使用2captcha --> 使用您自己的代理向他们发送验证码 id(对于 gcaptcha,代理是必要的,您可以使用 squid 代理服务器托管代理)--> 然后他们向您发送 g-response -- > 您将 g-response 发布回网站 --> 取消阻止

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

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

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

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

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

    1. 用带有recaptcha的浏览器打开一个登录页面
    2. 浏览器->右键->检查元素->打开网络标签
    3. 现在选中“我不是机器人”复选框,您将看到两个 HTTP POST 已经完成了,找到那个有网址的 https://www.google.com/recaptcha/api2/userverify?k=SITE_KEY_HERE , 查看响应部分,您会看到 google 回复了您一个 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"> 的所有元素并将其显示在您的网站上,您可能会收到“site-key”错误错误,因为验证码本身也会检测它是从哪里显示的(url) .但是,如果您使用一些 javascript,您可能能够欺骗它?(或者您可以尝试没有 javascript 版本的 recaptcha?禁用 javascript,您会看到一个,不确定它是如何工作的)2captcha.com 可能已经这样做了,因为我之前在他们的工作人员页面上看到过验证码,您可以去注册一个工作人员帐户并检查他们的工作人员页面。

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

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

    回到php浏览器:

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

    【讨论】:

    • 我只是得到一些产品价格,没什么花哨的,你的方法看起来不错,但工作量太大,我想我会增加一些睡眠时间,如果我不这样做一切都会好起来的找到另一种方法。
    • 我可以使用 php 浏览器手动清除该验证码吗?就像我在普通浏览器上做的那样,而是在 php 端浏览器上做。
    • Can I somehow use php browser to manually clear that captcha ? 请记住验证码是一种反机器人解决方案,它旨在防止您从非凡的浏览器中抓取任何数据。是的,确实有一些库可以让你用代码解决验证码,但这取决于验证码的类型。传统的验证码是用英文词汇制作的图片(由GD库提供支持),大部分都可以通过github上的很多开源库读取,例如this library
    • 然而,谷歌发明的最新验证码技术仍然无法被任何库读取。它要求您选择带有汽车或商店或其他东西的图​​片,没有人找到解决方案。确实存在a library 可以绕过google recaptcha v2,但它不读取验证码,而是使用验证码的漏洞。任何带有漏洞攻击的解决方案都不能被视为长期有效的解决方案。 google recaptcha v2 唯一稳定的解决方案是使用人工验证码求解器为您完成此操作,他们聘请真人阅读。
    • 让我解释一下基于人的验证码求解器的工作原理。首先您的php浏览器从网站请求数据,网站记录您的ip(例如ip 110.20.30.40)并将您的ip发送给google,google根据您的ip确定应该发送给您的验证码类型,然后google生成验证码项目给您,您会在 html 中看到验证码项目。现在您将验证码发送到 2captcha.com 等,他们的人连接您的代理(与您的 php 浏览器 110.20.30.40 具有相同的 ip)并且真正的人阅读验证码,他们有答案。您从 2captcha.com 请求答案
    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 2014-05-07
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2020-06-06
    相关资源
    最近更新 更多