我们托管了一组“资源”页面 - 为用户提供了一系列有用的链接。 多年来,我们每天都在剧本运行 - 循环浏览每个链接并发送一个PHP Guzzle Head请求...

问题描述 投票:0回答:1
正在使用的是我正在使用的PHP代码:

$client = new Client(); $request = $client->head($encoded_link); $request->setOptions(['userAgent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36']); $response = $request->send();

有很多应该能够帮助您的要点,并根据您的需求进行不同的过程。

如果您要检查的资源数量不太高,则可能会使用一些监视服务
工具
php guzzle http-status-code-403
1个回答
0
投票

Pingdom。

  1. 对于最现实的方法,您可以考虑通过Chrome-PHP,PHP-Webdriver或Symfony Panther等PHP库使用

    无头浏览器,它们会像真正的浏览器一样与站点进行交互。一开始需要一些工作,但这将非常有效。 您的脚本可以改进:

    使用而不是头部请求
  2. 许多安全系统对HEAD请求更加怀疑,因为它们通常由自动化工具使用,但很少由真实用户使用。切换以获取请求可能会有所帮助:

    $request = $client->get($encoded_link);

  3. 破坏您的用户代理字符串
    1. 您当前的用户代理已经过时了(Chrome 61)。使用最近的浏览器签名:

      $options = [ 'headers' => [ 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' ] ]; $request = $client->get($encoded_link, $options);
      ADD逼真的标题

      包括典型浏览器会发送的标头:

    2. $options = [ 'headers' => [ 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', 'Accept-Language' => 'en-US,en;q=0.9', 'Accept-Encoding' => 'gzip, deflate, br', 'Connection' => 'keep-alive', 'Upgrade-Insecure-Requests' => '1', 'Sec-Fetch-Dest' => 'document', 'Sec-Fetch-Mode' => 'navigate', 'Sec-Fetch-Site' => 'none', 'Sec-Fetch-User' => '?1' ] ];
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.