【问题标题】:400 Bad request with curl phpcurl php的400错误请求
【发布时间】:2019-12-10 19:05:32
【问题描述】:

scrape 来自其他站点或 API 的数据我正在使用下面的代码,但问题是当 URL 具有其他语言字体时,它会出现错误。如果网址是英文,这不是问题

$url='https://techblogs.site/अगर-हम-इन-7-फीचर्स-को-2019-में-पा/';
function ftch($url,$post="", $ck = 'cookie.dat')
{
    $ver   = rand(4, 6);
    $agent = 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36';
    $ch    = curl_init();

    curl_setopt($ch, CURLOPT_URL, '' . $url . '');

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_USERAGENT, $agent);

    curl_setopt($ch, CURLOPT_REFERER, $url);

    curl_setopt($ch, CURLOPT_HEADER, true);

    curl_setopt($ch, CURLOPT_COOKIESESSION, 'cookie.s');
    //curl_setopt($ch, CURLOPT_PROXY, $proxyIP);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $ck);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $ck);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT,2);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Accept-Language: en-us,en;q=0.7,de-de;q=0.3',
        'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'
     ));
    $content = curl_exec($ch);
    curl_close($ch);
    return $content;
}

$content=ftch($url);
echo $content; 

【问题讨论】:

标签: php curl


【解决方案1】:

您应该能够对 URL(不是 UTF-8 的部分)进行编码,这将允许连接通过。

<?php
$url = 'https://techblogs.site/'.urlencode("अगर-हम-इन-7-फीचर्स-को-2019-में-पा");

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 2014-03-05
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多