【问题标题】:How to post values and get response in PHP如何在 PHP 中发布值并获得响应
【发布时间】:2017-12-09 00:14:19
【问题描述】:

我想使用email-checker 进行电子邮件验证。我想发布emailid,我想从发布的页面中撤回它,无论答案是BAD 还是SUCCESS。发布页面是https://email-checker.net/check

这是我的代码:

$curl_connection = curl_init();
curl_setopt($curl_connection, CURLOPT_URL, 'https://www.bulkemailchecker.com/free-email-checker/');
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_FRESH_CONNECT,true);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_HEADER, false);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl_connection, CURLOPT_POST, true);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
$data=curl_exec($curl_connection);

谁能帮帮我?

【问题讨论】:

  • 只是关于该服务的说明。我刚刚在我的域上使用四个不同的地址进行了测试(我有一个全部地址,所以无论你写什么,我都会收到电子邮件)。它告诉我其中两个是“未知的”,两个是有效的。我不会相信它。如果您想验证电子邮件,只需发送确认电子邮件即可。
  • 您还没有发布任何解析代码,只是调用设置选项并执行curl。请看How Do I Ask a Good Question?
  • 您的代码中的 URL 与您在文本中提到的 URL 不同。

标签: php curl post


【解决方案1】:

首先向 url 发出 GET 请求,在标头中您将收到一个 cookie 会话 ID,在 html 中您将收到一个名为 _csrfCSRF token,保存两者,然后向 @987654324 发出新请求@ 带有 cookie 会话和 csrf 令牌,以及电子邮件,在名为 email 的参数(恰当地)中,使用 HTTP POST 请求,使用 application/x-www-urlencoded 编码。现在您的答案将出现在您收到的 html 中元素的文本内容中,id 为 results-wrapper

使用hhb_curl的示例实现:

<?php
declare(strict_types = 1);
const EMAIL = 'webmaster@hotmail.com';
require_once ('hhb_.inc.php');
$hc = new hhb_curl ( '', true );
$html = $hc->exec ( 'https://email-checker.net' )->getStdOut ();
$domd = @DOMDocument::loadHTML ( $html );
$xp = new DOMXPath ( $domd );
$csrf_token = $xp->query ( '//input[@name="_csrf"]' )->item ( 0 )->getAttribute ( "value" );
$html = $hc->setopt_array ( array (
        CURLOPT_URL => 'https://email-checker.net/check',
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => http_build_query ( array (
                '_csrf' => $csrf_token,
                'email' => EMAIL 
        ) ) 
) )->exec ()->getStdOut ();
$domd = @DOMDocument::loadHTML ( $html );
$xp = new DOMXPath ( $domd );
$result = trim ( $xp->query ( '//*[@id="results-wrapper"]' )->item ( 0 )->textContent );
var_dump ( $result );

当前输出:string(30) "OK The email address is valid." - 表示webmaster@hotmail.com 有效。 (见第 3 行)

  • 警告,在不到一小时的时间内尝试 5 次后,您将得到输出 Limit Exceeded Only 5 lookups per hour is allowed. Try Premium Plan 而不是

  • 警告,结果似乎非常不可靠。如果您确实需要验证某事的电子邮件地址,请将验证 url 发送到该电子邮件。

【讨论】:

  • 感谢您的帮助。但我有一个问题。我已经尝试过您的代码,但每次都会给我错误(SMTP 服务器超时)。当我输入像 asdasd@asdasd.com 这样的电子邮件时,它会返回 OK。
  • @MehmetAcar 是的,这似乎是他们检查器中的一个错误。向admin@email-checker.net询问不可靠的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2015-05-22
  • 2017-09-15
相关资源
最近更新 更多