ПРИМЕЧАНИЕ. Я исправил проблему с агентом пользователя и добавил дополнительный байт, соответствующий длине контента. Не повезло, однако.
Я не понимаю этого. Я запустил этот код ниже, и в результате в строке json истек срок действия ссылки (означает недопустимый).
Однако код curl делает то же самое и работает. Я либо получаю ожидаемую строку с URL, либо он говорит, что мне нужно подождать (от нескольких секунд до 1 минуты).
Почему? какая разница между двумя? Выглядит очень бодро, что ведет себя по-разному (это вызывает у меня ЧАСЫ проблем).
ПРИМЕЧАНИЕ. Единственный файл cookie, необходимый для сайта, - это SID (протестировано). Он содержит ваш идентификатор сессии. Первый пост активирует его, а вторая команда проверяет статус с помощью возвращаемой строки json. Не стесняйтесь настроить CookieContainer на использование только SID, если хотите.
ВНИМАНИЕ: вы можете изменить SID на другое значение, чтобы другие люди не активировали его. Возможно, вы захотите запустить 2-й URL-адрес, чтобы убедиться, что идентификатор сеанса не используется, и перед началом выдается сообщение об истечении / недействительности.
дополнительное примечание: с помощью curl или в вашем браузере, если вы выполните команду POST, вы можете вставить sid в контейнер cookie .NET, и вторая команда будет работать. Но выполнение первой команды (данные POST) не будет работать. Эту функцию записи я использовал для многих других сайтов, которые требуют публикации, и до сих пор она работала Очевидно, что проверка метода является большой проблемой, и я вижу, что это действительно POST при выполнении первой команды.
static void Main(string[] args)
{
var cookie = new CookieContainer();
PostData("http://uploading.com/files/get/37e36ed8/", "action=second_page&file_id=9134949&code=37e36ed8", cookie);
Thread.Sleep(4000);
var res = PostData("http://uploading.com/files/get/?JsHttpRequest=12719362769080-xml&action=get_link&file_id=9134949&code=37e36ed8&pass=undefined",
null/*this makes it GET*/, cookie);
Console.WriteLine(res);
/*
curl -b "SID=37468830" -A "DUMMY_User_Aggent" -d "action=second_page&file_id=9134949&code=37e36ed8" "http://uploading.com/files/get/37e36ed8/"
curl -b "SID=37468830" -A "DUMMY_User_Aggent" "http://uploading.com/files/get/?JsHttpRequest=12719362769080-xml&action=get_link&file_id=9134949&code=37e36ed8&pass=undefined"
*/
}
Мне надоели HttpWebRequest / .NET htto клиенты. Я сделал это с помощью curl (узнав, как настроить его на .NET и обновив себя). Я сделал это просто и быстро, и это работало. Никаких глупых проблем.
Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);
var curl = new Easy();
curl.SetOpt(CURLoption.CURLOPT_USERAGENT, "DUMMY_User_Aggent");
curl.SetOpt(CURLoption.CURLOPT_COOKIE, "SID=4385743");
curl.SetOpt(CURLoption.CURLOPT_POSTFIELDS, "action=second_page&file_id=9134949&code=37e36ed8");
curl.SetOpt(CURLoption.CURLOPT_URL, "http://uploading.com/files/get/37e36ed8/");
curl.Perform();
curl.SetOpt(CURLoption.CURLOPT_POST, 0);
Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData);
curl.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
curl.SetOpt(CURLoption.CURLOPT_URL, "http://uploading.com/files/get/?JsHttpRequest=12719362769080-xml&action=get_link&file_id=9134949&code=37e36ed8&pass=undefined");
curl.Perform();
curl.Cleanup();
Curl.GlobalCleanup();