Вотпрос по C# с открытием адресов по очереди

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by leaderru, 10 Jun 2010.

  1. leaderru

    leaderru Member

    Joined:
    19 May 2010
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Подскажите пожалуйста как на C# сделать программу, которая будет открывать сайты по очереди.

    Короче, Программа должна открывать заданные страницы, браузером начиная от

    Code:
    http://primer.ru/76560000000000000
    и до

    Code:
    http://primer.ru/76569999999999999
    После открытия страницы, открывать следующую, с интервалом +1 страница
     
  2. geniusz

    geniusz Member

    Joined:
    3 Aug 2008
    Messages:
    4
    Likes Received:
    15
    Reputations:
    5
    Старое сайтом при открытии следующего должно закрываться или нет?
     
  3. leaderru

    leaderru Member

    Joined:
    19 May 2010
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    нет
     
  4. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    Code:
    int i = 0;
    for (i=0; i<=9999; i++)
    {
               string page = GET("http://primer.ru/"+Convert.ToString(i));
    }
    тебе остается написать ф-цию GET которая будет скачивать страницу..
     
  5. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    string GET(string url)
    {
    WebRequest req = WebRequest.Create(url);
    WebResponse resp = req.GetResponse();
    Stream stream = resp.GetResponseStream();
    StreamReader sr = new StreamReader(stream);
    string s = sr.ReadToEnd();
    return s;
    }
     
  6. .ATK

    .ATK Active Member

    Joined:
    20 Feb 2009
    Messages:
    143
    Likes Received:
    111
    Reputations:
    9
    for(int i=76560000000000000;i<76569999999999999;i++)
    {
    unsafe(WebClient wb=new WebClient())
    {
    wb.DownloadString ("http://primer.ru/"+i);
    }
    }
     
  7. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Осталось только вспомнить, что signed int принимает максимальное значение 2147483647 :)
     
    1 person likes this.
  8. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    А также вспомнить синтаксис оператора unsafe :)
     
  9. leaderru

    leaderru Member

    Joined:
    19 May 2010
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Спасибо, а вот еще вопрос, как сделать программу чтобы четкий дипозон указывал я

    Программа должна открывать страницы браузера из этих заданных диапазонов начиная с меньшего и заканчивая большим, открыв страницу нужно подтвердить всплывающие окно или же нажать Enter чтобы закрыть его и после этого добавится человек в стим, и продолжать открывать следующие страницы с таким же циклом

    добавляется в стим человек по такой ссылке:
    Code:
    steam://friends/add/76561198005049041
     
  10. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    тут надо сниффером смотреть уже
    fiddler2 например
     
  11. Bers

    Bers Member

    Joined:
    17 May 2010
    Messages:
    78
    Likes Received:
    30
    Reputations:
    26
    Я не вполне понял, что значит "указывал диапазон", но по идее это делается так:

    Code:
    void Foo(string uriTemplate, IEnumerable<string> codes)
    {
       foreach(var code in codes)
      {
        using(var client = new WebClient())
        {
           client.DownloadString(string.Format(uriTemplate, code));
        }
      }
    }
    
    ...
    // а здесь ты эту функцию используешь:
    // первый параметр - шаблон адреса
    // второй параметр - список кодов для подстановки в шаблон. 
    // например, string[], List<string>, что угодно
    Foo(
      "steam://friends/add/{0}", 
      new [] { "76561198005049041", "76561198005049041" } );
    
    Это если я правильно понял задачу.
    Кстати, не уверен, что WebClient будет работать с протоколом Steam.

    UPD: Проверил - не работает. Тогда остается другой способ:

    Сниффаем трафик Steam-клиента, разбираемся, что и куда он отправляет, а затем переписываем функцию по такому принципу:

    Code:
    void Foo(string uriTemplate, IEnumerable<string> codes)
    {
       foreach(var code in codes)
      {
        using(var client = new WebClient())
        {
           var address = string.Format(uriTemplate, code);
           // а здесь имитируем поведение Steam-клиента
        }
      }
    }
    
    Только, боюсь, там все будет сложно и запутано :)

    UPD 2: Насколько я понял, тебе нужно отправлять команды вроде добавления друзей и т.п. клиенту Steam, запущенному на данной машине? Тогда можно попробовать импортировать функции из steam.dll и вызывать их.
     
    #11 Bers, 10 Jun 2010
    Last edited: 10 Jun 2010