Skip to content

Instantly share code, notes, and snippets.

@bagder
Last active February 24, 2019 15:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bagder/8535c58a98ae94192e65d762ad7ab104 to your computer and use it in GitHub Desktop.
Save bagder/8535c58a98ae94192e65d762ad7ab104 to your computer and use it in GitHub Desktop.
An attempt to reproduce curl issue 3602 with a sample written in C
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>
#include <curl/curl.h>
struct one {
const char *ip;
int port;
int type;
};
struct one proxies[]={
"83.167.203.174", 44848, CURLPROXY_HTTP,
"83.219.1.80", 56004, CURLPROXY_HTTP,
"83.239.97.26", 50223, CURLPROXY_HTTP,
"84.241.19.214", 4145, CURLPROXY_SOCKS4,
"85.11.66.137", 55886, CURLPROXY_HTTP,
"85.52.217.114", 42544, CURLPROXY_HTTP,
"85.193.216.85", 59205, CURLPROXY_HTTP,
"85.193.229.6", 57712, CURLPROXY_HTTP,
"85.198.135.180", 54630, CURLPROXY_HTTP,
#if 1
"86.38.39.21", 54703, CURLPROXY_HTTP,
"86.100.77.210", 53281, CURLPROXY_HTTP,
"87.244.182.181", 32598, CURLPROXY_HTTP,
"88.146.243.106", 35852, CURLPROXY_HTTP,
"88.150.135.10", 36624, CURLPROXY_HTTP,
"88.255.251.163", 8080, CURLPROXY_HTTP,
"89.67.144.213", 55605, CURLPROXY_HTTP,
"89.111.104.2", 41258, CURLPROXY_HTTP,
"89.189.189.115", 59249, CURLPROXY_HTTP,
"89.231.32.226", 55466, CURLPROXY_SOCKS4,
"91.139.1.158", 37504, CURLPROXY_HTTP,
"77.120.75.131", 35911, CURLPROXY_HTTP,
"77.222.20.246", 47888, CURLPROXY_HTTP,
"78.128.124.9", 47654, CURLPROXY_HTTP,
"78.132.136.40", 32431, CURLPROXY_HTTP,
"78.187.50.200", 30852, CURLPROXY_HTTP,
"79.78.184.12", 56834, CURLPROXY_HTTP,
"79.106.35.253", 8080, CURLPROXY_HTTP,
"79.106.41.15", 35876, CURLPROXY_HTTP,
"80.55.32.238", 59513, CURLPROXY_HTTP,
"80.71.112.51", 55243, CURLPROXY_SOCKS4,
"80.191.162.51", 44199, CURLPROXY_SOCKS4,
"80.211.154.106", 8080, CURLPROXY_HTTP,
"80.240.253.112", 50530, CURLPROXY_HTTP,
"80.249.229.64", 42186, CURLPROXY_HTTP,
"81.16.10.141", 59352, CURLPROXY_HTTP,
"81.163.62.221", 31299, CURLPROXY_HTTP,
"81.174.247.181", 8118, CURLPROXY_HTTP,
"81.199.32.214", 60172, CURLPROXY_HTTP,
"83.2.189.66", 38011, CURLPROXY_HTTP,
"83.13.63.38", 60860, CURLPROXY_HTTP,
"45.114.144.106", 23500, CURLPROXY_HTTP,
"46.20.93.83", 41258, CURLPROXY_HTTP,
"46.99.179.81", 48746, CURLPROXY_HTTP,
"46.151.108.6", 33727, CURLPROXY_HTTP,
"46.164.149.40", 36551, CURLPROXY_HTTP,
"46.228.199.70", 3128, CURLPROXY_HTTP,
"50.7.105.69", 48823, CURLPROXY_SOCKS4,
"50.7.106.228", 48823, CURLPROXY_SOCKS4,
"50.226.80.129", 42741, CURLPROXY_SOCKS4,
"51.38.71.101", 8080, CURLPROXY_HTTP,
"51.254.182.52", 61133, CURLPROXY_HTTP,
"58.68.228.234", 1234, CURLPROXY_SOCKS4,
"60.46.17.210", 3128, CURLPROXY_HTTP,
"62.74.230.146", 40018, CURLPROXY_HTTP,
"62.232.2.98", 53281, CURLPROXY_HTTP,
"65.173.110.238", 37252, CURLPROXY_SOCKS4,
"66.96.237.71", 36582, CURLPROXY_HTTP,
"67.226.65.195", 80, CURLPROXY_HTTP,
"68.183.17.69", 8080, CURLPROXY_HTTP,
"68.183.185.17", 8888, CURLPROXY_HTTP,
"37.19.94.86", 4145, CURLPROXY_SOCKS4,
"37.53.83.40", 50887, CURLPROXY_SOCKS4,
"41.78.172.20", 61169, CURLPROXY_HTTP,
"41.162.117.37", 8080, CURLPROXY_HTTP,
"41.170.11.226", 46093, CURLPROXY_HTTP,
"41.216.230.154", 56673, CURLPROXY_SOCKS4,
"41.217.216.45", 50951, CURLPROXY_HTTP,
"42.115.39.70", 49236, CURLPROXY_HTTP,
"43.229.27.175", 8080, CURLPROXY_HTTP,
"43.229.252.45", 53281, CURLPROXY_HTTP,
"45.63.51.89", 80, CURLPROXY_HTTP,
"45.64.122.210", 58181, CURLPROXY_HTTP,
"36.37.124.234", 36179, CURLPROXY_HTTP,
"36.37.163.220", 23500, CURLPROXY_HTTP,
"36.67.27.29", 56125, CURLPROXY_HTTP,
"36.67.27.189", 53323, CURLPROXY_SOCKS4,
"36.67.199.89", 47923, CURLPROXY_HTTP,
"36.89.81.129", 53732, CURLPROXY_HTTP,
"36.89.190.217", 45170, CURLPROXY_HTTP,
"36.89.227.50", 53281, CURLPROXY_HTTP,
"91.195.131.242", 4145, CURLPROXY_SOCKS4,
"91.200.125.248", 4145, CURLPROXY_SOCKS4,
"91.203.115.21", 45644, CURLPROXY_SOCKS4,
"91.214.240.19", 50481, CURLPROXY_HTTP,
"91.218.163.74", 50517, CURLPROXY_SOCKS4,
"91.228.32.70", 6969, CURLPROXY_HTTP,
"91.230.199.174", 60926, CURLPROXY_HTTP,
"91.235.7.216", 59067, CURLPROXY_HTTP,
"91.237.161.141", 45311, CURLPROXY_HTTP,
"92.39.56.15", 61917, CURLPROXY_SOCKS4,
"92.62.66.161", 4145, CURLPROXY_SOCKS4,
"92.115.102.133", 53281, CURLPROXY_HTTP,
"92.244.36.66", 60789, CURLPROXY_SOCKS4,
"92.244.36.68", 47150, CURLPROXY_HTTP,
"92.246.220.206", 40396, CURLPROXY_HTTP,
"93.87.51.138", 23500, CURLPROXY_HTTP,
"93.87.66.66", 61831, CURLPROXY_HTTP,
"93.116.57.4", 55674, CURLPROXY_HTTP,
"93.171.241.18", 45781, CURLPROXY_HTTP,
"93.177.150.112", 45186, CURLPROXY_HTTP,
"94.102.124.207", 35836, CURLPROXY_HTTP,
"94.179.130.34", 41293, CURLPROXY_HTTP,
"94.180.245.1", 61251, CURLPROXY_HTTP,
"94.190.190.254", 46269, CURLPROXY_HTTP,
"94.228.21.66", 55295, CURLPROXY_HTTP,
"94.240.46.195", 23500, CURLPROXY_HTTP,
"95.31.32.102", 34233, CURLPROXY_HTTP,
"95.38.211.185", 4145, CURLPROXY_SOCKS4,
"95.47.180.171", 53484, CURLPROXY_HTTP,
"95.66.140.121", 59078, CURLPROXY_HTTP,
"95.79.54.143", 80, CURLPROXY_HTTP,
"95.87.127.133", 50594, CURLPROXY_HTTP,
"95.140.27.135", 60275, CURLPROXY_HTTP,
"95.181.35.30", 40804, CURLPROXY_HTTP,
"96.9.69.230", 53281, CURLPROXY_HTTP,
"96.9.73.79", 61057, CURLPROXY_HTTP,
"96.9.91.27", 53523, CURLPROXY_HTTP,
"101.109.255.243", 50098, CURLPROXY_HTTP,
"101.255.124.202", 42608, CURLPROXY_HTTP,
"103.10.61.106", 59733, CURLPROXY_SOCKS4,
"103.12.246.65", 4145, CURLPROXY_SOCKS4,
"103.15.140.138", 42584, CURLPROXY_SOCKS4,
"103.21.231.131", 53281, CURLPROXY_HTTP,
"103.28.243.11", 37120, CURLPROXY_HTTP,
"103.71.255.10", 51242, CURLPROXY_HTTP,
"103.73.86.67", 8080, CURLPROXY_HTTP,
"103.75.32.132", 53130, CURLPROXY_HTTP,
"103.75.34.121", 46210, CURLPROXY_HTTP,
"103.76.170.50", 60240, CURLPROXY_HTTP,
"103.76.188.85", 44827, CURLPROXY_HTTP,
"103.76.188.209", 45190, CURLPROXY_HTTP,
"103.77.23.202", 59311, CURLPROXY_SOCKS4,
"103.78.164.1", 4145, CURLPROXY_SOCKS4,
"103.81.104.121", 4145, CURLPROXY_SOCKS4,
"103.85.19.169", 39856, CURLPROXY_SOCKS4,
"103.91.120.65", 40540, CURLPROXY_SOCKS4,
"103.92.153.17", 57408, CURLPROXY_SOCKS4,
"103.94.7.254", 4145, CURLPROXY_SOCKS4,
"103.94.169.114", 30372, CURLPROXY_HTTP,
"103.99.161.17", 4145, CURLPROXY_SOCKS4,
"103.106.56.33", 4145, CURLPROXY_SOCKS4,
"103.106.148.200", 53712, CURLPROXY_HTTP,
"103.106.216.21", 21913, CURLPROXY_HTTP,
"103.107.163.129", 51327, CURLPROXY_SOCKS4,
"103.108.62.14", 49271, CURLPROXY_HTTP,
"103.109.93.25", 44550, CURLPROXY_SOCKS4,
"103.110.184.163", 40186, CURLPROXY_SOCKS4,
"103.115.100.246", 47788, CURLPROXY_HTTP,
"103.192.169.186", 35865, CURLPROXY_HTTP,
"103.194.240.54", 53908, CURLPROXY_SOCKS4,
"103.205.27.46", 52311, CURLPROXY_HTTP,
"103.206.201.179", 37938, CURLPROXY_HTTP,
"103.211.8.125", 4145, CURLPROXY_SOCKS4,
"103.221.254.2", 36778, CURLPROXY_HTTP,
"103.226.142.90", 47460, CURLPROXY_SOCKS4,
"103.226.227.218", 43010, CURLPROXY_HTTP,
"103.229.177.51", 45275, CURLPROXY_HTTP,
"103.237.174.82", 55326, CURLPROXY_HTTP,
"103.243.82.234", 59063, CURLPROXY_SOCKS4,
"103.248.31.244", 4145, CURLPROXY_SOCKS4,
"103.255.148.26", 35242, CURLPROXY_HTTP,
"105.255.223.2", 8080, CURLPROXY_HTTP,
"109.87.193.112", 33620, CURLPROXY_HTTP,
"109.225.41.174", 47234, CURLPROXY_HTTP,
"109.245.214.49", 42004, CURLPROXY_HTTP,
"110.36.218.126", 36651, CURLPROXY_HTTP,
"110.74.193.235", 53569, CURLPROXY_HTTP,
"110.74.196.9", 54848, CURLPROXY_HTTP,
"110.74.219.10", 30906, CURLPROXY_HTTP,
"1.10.186.48", 38104, CURLPROXY_HTTP,
"1.10.186.157", 51976, CURLPROXY_HTTP,
"1.10.187.6", 31097, CURLPROXY_HTTP,
"1.10.188.12", 35573, CURLPROXY_HTTP,
"1.10.188.205", 43580, CURLPROXY_HTTP,
"1.20.97.166", 32588, CURLPROXY_HTTP,
"1.20.99.176", 47005, CURLPROXY_HTTP,
"1.20.99.185", 44450, CURLPROXY_HTTP,
"1.20.100.42", 47962, CURLPROXY_HTTP,
"2.92.242.230", 40014, CURLPROXY_HTTP,
"3.8.44.17", 80, CURLPROXY_HTTP,
"3.8.121.95", 80, CURLPROXY_HTTP,
"5.19.142.82", 37589, CURLPROXY_HTTP,
"5.58.152.226", 60583, CURLPROXY_HTTP,
"5.128.32.12", 51959, CURLPROXY_HTTP,
"5.140.233.249", 33455, CURLPROXY_HTTP,
"5.157.115.235", 3128, CURLPROXY_HTTP,
"12.189.124.100", 44791, CURLPROXY_HTTP,
"13.233.72.134", 80, CURLPROXY_HTTP,
"18.219.3.105", 80, CURLPROXY_HTTP,
"18.220.245.122", 80, CURLPROXY_HTTP,
"18.228.217.208", 80, CURLPROXY_HTTP,
"24.172.34.114", 52143, CURLPROXY_HTTP,
"31.29.62.188", 4145, CURLPROXY_SOCKS4,
"31.42.254.24", 30912, CURLPROXY_HTTP,
"31.46.30.228", 51579, CURLPROXY_HTTP,
"31.145.137.166", 4145, CURLPROXY_SOCKS4,
"31.173.211.114", 43873, CURLPROXY_HTTP,
"31.200.228.169", 37293, CURLPROXY_HTTP,
"31.223.245.183", 4145, CURLPROXY_SOCKS4,
"34.244.2.233", 8123, CURLPROXY_HTTP,
"35.196.70.16", 80, CURLPROXY_HTTP,
"36.37.109.205", 808, CURLPROXY_HTTP,
"110.172.135.234", 53822, CURLPROXY_HTTP,
"110.235.198.3", 57660, CURLPROXY_HTTP,
"111.92.243.154", 37539, CURLPROXY_HTTP,
"113.11.47.242", 40071, CURLPROXY_HTTP,
"113.53.83.157", 35969, CURLPROXY_HTTP,
"113.108.242.36", 32655, CURLPROXY_SOCKS4,
"114.35.29.247", 42313, CURLPROXY_SOCKS4,
"115.127.39.66", 55474, CURLPROXY_HTTP,
"115.178.27.125", 48497, CURLPROXY_HTTP,
"116.212.152.128", 36041, CURLPROXY_HTTP,
"117.196.236.162", 43989, CURLPROXY_HTTP,
"118.172.201.109", 54347, CURLPROXY_HTTP,
"118.173.232.5", 55124, CURLPROXY_HTTP,
"118.173.232.43", 48204, CURLPROXY_HTTP,
"118.173.232.190", 13629, CURLPROXY_SOCKS4,
"118.174.234.129", 54431, CURLPROXY_HTTP,
"118.175.93.28", 61285, CURLPROXY_HTTP,
"118.175.93.164", 37694, CURLPROXY_HTTP,
"118.179.69.233", 44505, CURLPROXY_HTTP,
"118.179.84.106", 34236, CURLPROXY_HTTP,
"119.82.252.115", 49085, CURLPROXY_HTTP,
"119.82.253.155", 37436, CURLPROXY_HTTP,
"119.235.19.42", 38546, CURLPROXY_HTTP,
"119.252.175.38", 4550, CURLPROXY_HTTP,
"122.15.131.65", 57873, CURLPROXY_HTTP,
"122.102.41.82", 56067, CURLPROXY_HTTP,
"122.176.65.143", 42175, CURLPROXY_HTTP,
"124.41.211.213", 54986, CURLPROXY_HTTP,
"124.41.211.231", 49949, CURLPROXY_HTTP,
"124.41.213.203", 55187, CURLPROXY_HTTP,
"124.41.240.56", 50526, CURLPROXY_HTTP,
"125.27.251.208", 30753, CURLPROXY_HTTP,
"125.209.108.26", 53126, CURLPROXY_HTTP,
"128.40.76.198", 80, CURLPROXY_HTTP,
"128.201.97.156", 53281, CURLPROXY_HTTP,
"128.201.240.245", 4145, CURLPROXY_SOCKS4,
"130.193.112.146", 36923, CURLPROXY_HTTP,
"131.108.63.213", 57604, CURLPROXY_HTTP,
"131.255.4.49", 10770, CURLPROXY_HTTP,
"134.0.16.6", 47631, CURLPROXY_HTTP,
"138.36.108.30", 4145, CURLPROXY_SOCKS4,
"138.122.5.22", 61201, CURLPROXY_HTTP,
"138.186.122.105", 43602, CURLPROXY_HTTP,
"138.186.172.222", 33109, CURLPROXY_SOCKS4,
"139.178.127.128", 4145, CURLPROXY_SOCKS4,
"139.255.64.10", 41309, CURLPROXY_HTTP,
"141.101.236.49", 56000, CURLPROXY_HTTP,
"143.0.140.200", 3128, CURLPROXY_HTTP,
"149.255.243.78", 51372, CURLPROXY_SOCKS4,
"154.0.15.166", 49713, CURLPROXY_HTTP,
"154.41.2.154", 13538, CURLPROXY_HTTP,
"157.230.43.245", 8888, CURLPROXY_HTTP,
"159.192.97.83", 55938, CURLPROXY_HTTP,
"159.192.97.181", 23500, CURLPROXY_HTTP,
"163.53.150.230", 30195, CURLPROXY_HTTP,
"163.53.182.148", 39486, CURLPROXY_HTTP,
"165.90.211.69", 61692, CURLPROXY_HTTP,
"166.249.54.244", 55867, CURLPROXY_HTTP,
"167.99.79.1", 31330, CURLPROXY_HTTP,
"168.181.121.195", 51514, CURLPROXY_HTTP,
"168.205.84.55", 4145, CURLPROXY_SOCKS4,
"168.232.198.25", 32009, CURLPROXY_HTTP,
"169.255.67.244", 37804, CURLPROXY_HTTP,
"170.0.112.199", 50294, CURLPROXY_SOCKS4,
"170.0.112.226", 50294, CURLPROXY_SOCKS4,
"170.0.124.161", 4145, CURLPROXY_SOCKS4,
"170.79.121.38", 4145, CURLPROXY_SOCKS4,
"170.79.122.194", 4145, CURLPROXY_SOCKS4,
"170.79.123.26", 4145, CURLPROXY_SOCKS4,
"170.80.17.129", 40336, CURLPROXY_HTTP,
"170.80.52.33", 4145, CURLPROXY_SOCKS4,
"170.210.236.1", 34792, CURLPROXY_HTTP,
"170.231.140.150", 4145, CURLPROXY_SOCKS4,
"170.245.173.87", 4145, CURLPROXY_SOCKS4,
"172.96.224.179", 80, CURLPROXY_HTTP,
"175.100.5.52", 45940, CURLPROXY_HTTP,
"175.100.185.151", 53281, CURLPROXY_HTTP,
"176.98.75.120", 45259, CURLPROXY_HTTP,
"176.98.76.210", 45280, CURLPROXY_HTTP,
"176.103.45.27", 46994, CURLPROXY_HTTP,
"176.111.10.136", 46560, CURLPROXY_HTTP,
"176.119.18.92", 30996, CURLPROXY_HTTP,
"176.120.211.176", 58035, CURLPROXY_HTTP,
"176.196.238.234", 44648, CURLPROXY_HTTP,
"176.214.81.106", 41774, CURLPROXY_HTTP,
"176.221.112.82", 52094, CURLPROXY_HTTP,
"177.66.53.203", 43493, CURLPROXY_HTTP,
"177.66.255.232", 61798, CURLPROXY_HTTP,
"177.75.143.198", 43223, CURLPROXY_HTTP,
"177.220.171.54", 60729, CURLPROXY_HTTP,
"177.223.52.242", 42363, CURLPROXY_HTTP,
"178.32.59.233", 53281, CURLPROXY_HTTP,
"178.75.58.58", 41514, CURLPROXY_HTTP,
"178.92.9.210", 3128, CURLPROXY_HTTP,
"178.124.152.84", 52676, CURLPROXY_HTTP,
"178.128.58.122", 8080, CURLPROXY_HTTP,
"178.128.123.20", 8888, CURLPROXY_HTTP,
"178.150.242.139", 36086, CURLPROXY_HTTP,
"178.170.254.178", 46788, CURLPROXY_HTTP,
"178.217.168.77", 46062, CURLPROXY_HTTP,
"180.247.199.128", 8080, CURLPROXY_HTTP,
"181.112.57.34", 60148, CURLPROXY_HTTP,
"181.113.17.230", 59067, CURLPROXY_HTTP,
"181.113.135.254", 52058, CURLPROXY_HTTP,
"181.129.39.2", 29792, CURLPROXY_HTTP,
"181.191.241.179", 33670, CURLPROXY_SOCKS4,
"181.196.77.70", 53281, CURLPROXY_HTTP,
"181.196.147.98", 45882, CURLPROXY_HTTP,
"182.16.163.138", 8080, CURLPROXY_HTTP,
"182.52.51.15", 33680, CURLPROXY_HTTP,
"182.52.51.181", 3629, CURLPROXY_SOCKS4,
"182.53.206.40", 52214, CURLPROXY_HTTP,
"182.75.21.30", 46527, CURLPROXY_HTTP,
"182.253.201.10", 36776, CURLPROXY_HTTP,
"182.253.233.10", 8080, CURLPROXY_HTTP,
"183.81.157.178", 52555, CURLPROXY_HTTP,
"183.81.158.106", 4145, CURLPROXY_SOCKS4,
"185.59.244.161", 41258, CURLPROXY_HTTP,
"185.80.130.78", 3128, CURLPROXY_HTTP,
"185.112.249.187", 3128, CURLPROXY_HTTP,
"185.136.151.20", 58371, CURLPROXY_HTTP,
"185.162.57.251", 80, CURLPROXY_HTTP,
"185.194.24.187", 37854, CURLPROXY_HTTP,
"186.30.57.251", 48786, CURLPROXY_HTTP,
"186.38.39.22", 39524, CURLPROXY_HTTP,
"187.1.43.246", 53396, CURLPROXY_HTTP,
"187.87.241.25", 53386, CURLPROXY_HTTP,
"187.111.192.142", 30485, CURLPROXY_HTTP,
"188.121.103.187", 4145, CURLPROXY_SOCKS4,
"188.130.240.17", 52343, CURLPROXY_HTTP,
"188.186.182.125", 4145, CURLPROXY_SOCKS4,
"188.233.188.128", 31244, CURLPROXY_HTTP,
"189.127.35.51", 41615, CURLPROXY_HTTP,
"190.7.141.66", 47231, CURLPROXY_HTTP,
"190.53.46.14", 38618, CURLPROXY_HTTP,
"190.107.20.203", 4145, CURLPROXY_SOCKS4,
"190.128.135.130", 44915, CURLPROXY_SOCKS4,
"190.152.5.126", 53040, CURLPROXY_HTTP,
"190.193.8.28", 9999, CURLPROXY_SOCKS4,
"190.248.13.19", 50553, CURLPROXY_HTTP,
"190.248.136.18", 53963, CURLPROXY_HTTP,
"191.102.104.2", 80, CURLPROXY_HTTP,
"192.140.42.82", 39448, CURLPROXY_HTTP,
"193.59.101.12", 4145, CURLPROXY_SOCKS4,
"193.160.226.89", 53186, CURLPROXY_HTTP,
"194.67.37.90", 3128, CURLPROXY_HTTP,
"194.169.164.3", 57562, CURLPROXY_HTTP,
"195.39.71.252", 56935, CURLPROXY_HTTP,
"195.128.119.233", 4145, CURLPROXY_SOCKS4,
"195.177.75.106", 30297, CURLPROXY_HTTP,
"195.239.178.110", 40448, CURLPROXY_HTTP,
"196.18.215.37", 3128, CURLPROXY_HTTP,
"196.18.215.72", 3128, CURLPROXY_HTTP,
"196.18.215.75", 3128, CURLPROXY_HTTP,
"196.18.215.160", 3128, CURLPROXY_HTTP,
"196.18.215.230", 3128, CURLPROXY_HTTP,
"196.18.215.239", 3128, CURLPROXY_HTTP,
"196.32.109.73", 56930, CURLPROXY_HTTP,
"196.38.8.91", 8080, CURLPROXY_HTTP,
"196.201.206.129", 55625, CURLPROXY_HTTP,
"197.98.180.162", 61047, CURLPROXY_HTTP,
"197.232.55.224", 39385, CURLPROXY_HTTP,
"197.245.152.245", 38173, CURLPROXY_HTTP,
"197.248.224.242", 80, CURLPROXY_HTTP,
"198.144.108.36", 54321, CURLPROXY_SOCKS4,
"200.5.35.234", 4145, CURLPROXY_SOCKS4,
"200.7.205.194", 51910, CURLPROXY_HTTP,
"200.35.49.73", 45186, CURLPROXY_HTTP,
"200.71.123.185", 34343, CURLPROXY_HTTP,
"200.195.188.2", 32954, CURLPROXY_HTTP,
"200.255.122.170", 8080, CURLPROXY_HTTP,
"201.234.253.24", 59238, CURLPROXY_HTTP,
"202.3.72.6", 38725, CURLPROXY_HTTP,
"202.49.183.168", 30309, CURLPROXY_HTTP,
"202.57.39.126", 4145, CURLPROXY_SOCKS4,
"202.57.49.193", 4145, CURLPROXY_SOCKS4,
"202.57.55.242", 52634, CURLPROXY_HTTP,
"202.61.52.14", 60267, CURLPROXY_HTTP,
"202.84.79.11", 41247, CURLPROXY_HTTP,
"202.93.226.170", 4145, CURLPROXY_SOCKS4,
"202.178.125.99", 33853, CURLPROXY_HTTP,
"203.17.150.95", 38498, CURLPROXY_HTTP,
"203.76.147.26", 45684, CURLPROXY_HTTP,
"203.81.176.254", 49901, CURLPROXY_HTTP,
"203.129.195.183", 80, CURLPROXY_HTTP,
"203.142.69.242", 47619, CURLPROXY_HTTP,
"203.160.58.117", 4145, CURLPROXY_SOCKS4,
"203.174.15.234", 40604, CURLPROXY_HTTP,
"203.177.133.148", 44632, CURLPROXY_HTTP,
"206.189.137.227", 3128, CURLPROXY_HTTP,
"208.77.8.25", 54321, CURLPROXY_SOCKS4,
"208.98.185.89", 53630, CURLPROXY_HTTP,
"210.3.215.56", 8080, CURLPROXY_HTTP,
"210.16.120.108", 3128, CURLPROXY_HTTP,
"212.28.237.131", 59588, CURLPROXY_HTTP,
"212.72.159.174", 50323, CURLPROXY_HTTP,
"212.90.162.54", 50819, CURLPROXY_HTTP,
"212.154.200.6", 80, CURLPROXY_HTTP,
"213.6.67.86", 32586, CURLPROXY_HTTP,
"213.6.199.94", 41320, CURLPROXY_HTTP,
"213.23.110.196", 8080, CURLPROXY_HTTP,
"213.87.42.53", 40367, CURLPROXY_HTTP,
"213.174.6.207", 43935, CURLPROXY_SOCKS4,
"217.113.17.226", 50948, CURLPROXY_HTTP,
"221.120.163.242", 56969, CURLPROXY_HTTP,
#endif
NULL, 0, 0,
};
#ifdef _WIN32
#define WAITMS(x) Sleep(x)
#else
/* Portable sleep for platforms other than Windows. */
#define WAITMS(x) \
struct timeval wait = { 0, (x) * 1000 }; \
(void)select(0, NULL, NULL, NULL, &wait);
#endif
#define N_PARALLEL 400
struct urlpriv {
char errormsg[CURL_ERROR_SIZE];
struct timeval start;
};
int main(void)
{
CURLM *mh;
int still_running = 0; /* keep number of running handles */
int added = 0;
/* init a multi stack */
mh = curl_multi_init();
do {
CURLMcode mc; /* curl_multi_wait() return code */
int numfds;
CURLMsg *msg;
int msgs_left;
while(proxies[added].ip && (still_running < N_PARALLEL)) {
CURL *e = curl_easy_init();
char proxybuf[128];
struct urlpriv *p = calloc(1, sizeof(struct urlpriv));
gettimeofday(&p->start, NULL);
snprintf(proxybuf, sizeof(proxybuf), "%s:%u",
proxies[added].ip, proxies[added].port);
curl_easy_setopt(e, CURLOPT_URL, "https://www.example.com/");
curl_easy_setopt(e, CURLOPT_CONNECTTIMEOUT_MS, 3000L);
curl_easy_setopt(e, CURLOPT_TIMEOUT_MS, 4000L);
curl_easy_setopt(e, CURLOPT_PROXY, proxybuf);
curl_easy_setopt(e, CURLOPT_PROXYTYPE, proxies[added].type);
curl_easy_setopt(e, CURLOPT_ERRORBUFFER, p->errormsg);
curl_easy_setopt(e, CURLOPT_PRIVATE, p);
curl_multi_add_handle(mh, e);
still_running++;
added++;
}
#if 0
fprintf(stderr, "Perform %d parallel transfers\n", still_running);
#endif
/* we start some action by calling perform right away */
curl_multi_perform(mh, &still_running);
while ((msg = curl_multi_info_read(mh, &msgs_left))) {
if (msg->msg == CURLMSG_DONE) {
CURL *e = msg->easy_handle;
struct urlpriv *p;
struct timeval now;
long diff;
long us;
gettimeofday(&now, NULL);
curl_easy_getinfo(e, CURLINFO_PRIVATE, &p);
diff = (long)now.tv_sec-p->start.tv_sec;
us = diff * 1000000 + ((long)now.tv_usec - (long)p->start.tv_usec);
if(msg->data.result != CURLE_OK) {
double time;
curl_off_t ttime;
curl_easy_getinfo(e, CURLINFO_TOTAL_TIME, &time);
curl_easy_getinfo(e, CURLINFO_TOTAL_TIME_T, &ttime);
fprintf(stderr, "returned: %d - %s time:%.3f / %ld us (real: %ld)\n",
msg->data.result, p->errormsg, time, (long)ttime,
us);
}
free(p);
curl_multi_remove_handle(mh, e);
curl_easy_cleanup(e);
}
}
/* wait for activity, timeout or "nothing" */
mc = curl_multi_wait(mh, NULL, 0, 1000, &numfds);
if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
break;
}
} while(still_running);
curl_multi_cleanup(mh);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment