小编Dan*_*erg的帖子

PHP-CURL的curl_multi_exec内部真的是多线程的吗?

我的问题非常简单,如标题所述.但是我再说一遍.

我想使用php-curl下载多个站点.我将从控制台运行它.我将使用curl_multi_exec下载所有网站.现在问题是,curl会为每个请求创建不同的线程吗?

我知道我可以通过分叉多个进程来实现它.但那不是线程.我不想要线程化.我想知道它的多线程吗?

php multithreading curl libcurl

6
推荐指数
1
解决办法
2168
查看次数

QUIC 多路复用与 HTTP/2 有何不同

QUIC 和 HTTP/3 多路复用(通过 UDP)与 HTTP/2(通过 TCP)带来的有何不同?

http spdy quic http3

6
推荐指数
1
解决办法
694
查看次数

如何启用curl的AsynchDNS?

我想启用curl的AsynchDNS(在phpinfo()中找到)。我必须做什么?这是截图: 在此输入图像描述

我发现安装http://c-ares.haxx.se/

c-ares is a C library that performs DNS requests and name resolves asynchronously
Run Code Online (Sandbox Code Playgroud)

http://curl.haxx.se/dev/readme-ares.html 但我仍然坚持在curl上安装如何存在。

php curl c-ares

5
推荐指数
1
解决办法
7414
查看次数

wget保持会话等效卷曲

我正在创建一个应该在MAC中工作的脚本,我想知道使用curl命令的以下命令行的等效性:

wget --keep-session-cookies --load-cookies=cookies.txt --referer=website.com http://website.com/folder/$count
Run Code Online (Sandbox Code Playgroud)

提前致谢.

bash curl wget

5
推荐指数
1
解决办法
5422
查看次数

在Ubuntu上使用curlftpfs的权限

我用

$sudo curlftpfs –o allow_other alpha:1234  @192.168.1.100 /home/alpha/share
Run Code Online (Sandbox Code Playgroud)

在Ubuntu 12.04中将ftp文件夹挂载为本地文件夹

然后我可以读取和编辑该文件夹中的文件

但是我无法使用Matlab在此文件夹中添加新文件

这是情况

我使用Matlab在此文件夹中绘制png文件

但是Matlab告诉我,它没有在此文件夹中创建新文件的权限

所以我与$ls -alamd 核对了一下,并提供了以下信息:

drwxr-xr-x  1 root  root    1024  1??  1  1970 share
Run Code Online (Sandbox Code Playgroud)

当我想修改我的代码和数据时,它就可以了!

但是当使用Matlab创建新图片时,总是会出现权限问题

我试过了

sudo chomd 777 /home/alpha/share
Run Code Online (Sandbox Code Playgroud)

它给我下面的错误:

chmod: changing permissions of ??/home/alpha/share??: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

即使我尝试使用root帐户

如何解决?

ftp ubuntu matlab permission-denied curlftpfs

5
推荐指数
1
解决办法
2554
查看次数

使用 HTTPS 和代理时,我可以避免使用 cURL 发出 CONNECT 请求吗?

HTTP请求

当您使用代理发出 HTTP cURL 请求时,您将执行以下操作:

curl -x http://myproxy:8888 http://github.com
Run Code Online (Sandbox Code Playgroud)

cURL 向代理 myproxy:8888 发送一个 HTTP 请求,该代理创建一个到http://github.com的新 HTTP 请求

The request content is :
GET /
Host: myproxy:8888
Location: http://github.com
Run Code Online (Sandbox Code Playgroud)

HTTPS 连接

当您使用代理发出 HTTPS cURL 请求时,您将执行以下操作:

curl -x http://myproxy:8888 https://github.com
Run Code Online (Sandbox Code Playgroud)

cURL 向代理 myproxy:8888 发送 CONNECT 请求,这会在您和 github 之间创建 TCP 隧道。所有 SSL 协商均在您和 github 之间进行。

HTTPS 请求

我想在没有 CONNECT 的情况下使用代理发出 HTTPS cURL 请求。我想为 HTTPS URL 的代理创建 HTTP 请求。

请求内容将是:

GET /
Host: myproxy:8888
Location: **https**://github.com
Run Code Online (Sandbox Code Playgroud)

是否可以 ?这个怎么做 ?

https proxy curl

5
推荐指数
1
解决办法
5208
查看次数

HTTP2 可用,但服务器拒绝使用它,为什么会这样?

我已经成功地为我的虚拟主机设置了 http2,但是当我尝试通过 curl 访问 url 时,它看起来服务器拒绝通过 http2 连接并接受 http1。谁能解释为什么会这样?以及如何告诉我的服务器首先使用 http2。

以下是我尝试为其配置 http2 的站点的 curl 输出。

* Rebuilt URL to: https://example.com/
*   Trying 172.24.112.31...
* TCP_NODELAY set
* Connected to example.com (172.24.112.31) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [221 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [112 bytes …
Run Code Online (Sandbox Code Playgroud)

apache curl http2

5
推荐指数
1
解决办法
1万
查看次数

libcurl为什么不为IP设置SNI?

我只是注意到当我使用IP进行HTTPS呼叫时,libcurl没有设置SNI字段。我找到了这个:

https://github.com/curl/curl/blame/master/lib/vtls/openssl.c

#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
  if((0 == Curl_inet_pton(AF_INET, hostname, &addr)) &&
#ifdef ENABLE_IPV6
     (0 == Curl_inet_pton(AF_INET6, hostname, &addr)) &&
#endif
     sni &&
     !SSL_set_tlsext_host_name(BACKEND->handle, hostname))
    infof(data, "WARNING: failed to configure server name indication (SNI) "
          "TLS extension\n");
#endif
Run Code Online (Sandbox Code Playgroud)

根据Curl_inet_pton文档:

 * inet_pton(af, src, dst)
 *      convert from presentation format (which usually means ASCII printable)
 *      to network format (which is usually some kind of binary format).
 * return:
 *      1 if the address was valid for the specified address family
 * …
Run Code Online (Sandbox Code Playgroud)

libcurl sni

5
推荐指数
1
解决办法
301
查看次数

C++ OpenSSL 1.0 迁移到 3.0

我正在尝试创建一个机器人来访问 BitStamp API ( https://www.bitstamp.net/api/ ) 并执行操作,但我遇到了障碍。

在链接的页面中,他们展示了如何使用 c++(V2 版本)进行身份验证的示例。我在使用 openSSL 进行身份验证时遇到这部分问题:

HMAC_CTX ctx;
HMAC_CTX_init(&ctx);

HMAC_Init_ex(&ctx, api_secret.c_str(), api_secret.length(), EVP_sha256(), NULL);
HMAC_Update(&ctx, (unsigned char*)data_to_sign.c_str(), data_to_sign.length());
HMAC_Final(&ctx, result, &len);
HMAC_CTX_cleanup(&ctx);

std::string x_auth_signature = b2a_hex( (char *)result, 32 );
free(result);
Run Code Online (Sandbox Code Playgroud)

std::string b2a_hex(char *byte_arr, int n)
{
    const static std::string hex_codes = "0123456789abcdef";
    std::string hex_string;
    for ( int i = 0; i < n ; ++i ) {
        unsigned char bin_value = byte_arr[i];
        hex_string += hex_codes[( bin_value >> 4 ) & 0x0F];
        hex_string …
Run Code Online (Sandbox Code Playgroud)

c++ openssl

5
推荐指数
1
解决办法
1万
查看次数

为什么libcurl有时会抱怨"无法解析主机名"?

我编写了一个使用libcurl的多线程程序,但有时curl会抱怨它在exec curl_easy_perform之后无法解析主机名,有时候不会.

size_t Http::WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
    size_t realsize = size * nmemb;
    MemoryStruct *mem = (MemoryStruct *)userp;

    mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
    assert(NULL != mem->memory);
    memcpy(&(mem->memory[mem->size]), contents, realsize);
    mem->size += realsize;
    mem->memory[mem->size] = 0;

    return realsize;
}

void Http::run(const URL &url, Http::FinishedCallback cbk)
{
    CURL *handle = curl_easy_init();
    if (handle) 
    {

        MemoryStruct *chunk = new MemoryStruct;
        chunk->memory = (char *)malloc(1);  /* will be grown as needed by the realloc above …
Run Code Online (Sandbox Code Playgroud)

curl libcurl

4
推荐指数
1
解决办法
1533
查看次数

标签 统计

curl ×6

libcurl ×3

php ×2

apache ×1

bash ×1

c++ ×1

c-ares ×1

curlftpfs ×1

ftp ×1

http ×1

http2 ×1

http3 ×1

https ×1

matlab ×1

multithreading ×1

openssl ×1

permission-denied ×1

proxy ×1

quic ×1

sni ×1

spdy ×1

ubuntu ×1

wget ×1