powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Программа для автоматического подключения к нескольким сайтам
5 сообщений из 5, страница 1 из 1
Программа для автоматического подключения к нескольким сайтам
    #38144635
greg_123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Начальство предварительно поставило задачу - написать программу, которая в автоматическом режиме будет подключаться к нескольким сайтам (ввод логина/ пароля и заполнения нескольких параметров) и получения в ответ некоторой информации.
Кто-нибудь сталкивалься с такими задачами? Как это можно реализовать?
Пока точных данных по ТЗ нет, решил узнать в каком направлении хотя бы копать.

Заранее спасибо.
...
Рейтинг: 0 / 0
Программа для автоматического подключения к нескольким сайтам
    #38144694
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greg_123,
Если без js то curl или другой http-клиент, возможно встроенный в ваш любимый язык.
GET/POST, возможно "правильные" user-agent и referer, сенсовые coockie. Незнакомые слова - см. HTTP.
Разбирать или регулярками, или валидирующим парсером + XSLT. Второе правильнее если собиираться страдать этим долго.
Если с js и много то ищите управляемый браузер или библитотеку доступа к ядру обычного под ваш язык.

Имхо тема не для этого форума.
...
Рейтинг: 0 / 0
Программа для автоматического подключения к нескольким сайтам
    #38146118
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, тема не для этого форума.
Самый простой, но Неправильный вариант, который смог бы осилить любой студент: тестовые фреймворки вроде http://watin.org/. Если это будет работать, то почему бы и нет. Это, кстати будет работать при наличии "сложных JS", но программа будет браузер открывать.
принцип работы там прост:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public void SearchForWatiNOnGoogle()
{
  using (var browser = new IE("http://www.google.com")) //открыли страницу
  {
    browser.TextField(Find.ByName("q")).TypeText("WatiN"); //Ввели текст в строку поиска
    browser.Button(Find.ByName("btnG")).Click(); //кликнули по кнопочке
    Assert.IsTrue(browser.ContainsText("WatiN")); //проверили, то ли оно там искало
  }
}


Возможно, можно найти то же самое, по простоте использования, но без IE.
...
Рейтинг: 0 / 0
Программа для автоматического подключения к нескольким сайтам
    #38175181
Peter F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо начинать с того, какими средствами разработки вы владеете. Факт. любой язык имеет относ. простые способы работы с HTTP.
Как уже было сказано можно использовать библиотеку CURL - встроена в PHP (и сам PHP скрипт можно вызвать из коммандной строки, а вызов командной строки можно встроить в cron или Виндос Task Scheduler)
На Джава можно использовать опен сорс библиотеку Apache HttpClient

Если программировать особо неохота - можно попробовать выстроить сценарий состоящий из шагов (запросов) в SOAP UI (soapui.org) и отрабатывать SOAPUI скрипт опять же через командную строку. SOAP UI в любом случае может оказаться полезным для отладки/проверки самих запросов, параметров, аутентификации ..
...
Рейтинг: 0 / 0
Программа для автоматического подключения к нескольким сайтам
    #38281900
Aeliot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
greg_123,

Решал подобную задачу.
Поскольку решение используется не часто, то сделал в банальном MS Access. Там подключил IE. Через vba находим нужные элементы и заполняем их.

В прикреплённом файле рабочая база.

Основную работу выполняет эта функция. Всё остальное бутафория.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
Private Sub FillFormF( _
        ByVal lngURL As Long, _
        ByVal lngSet As Long _
        )
    Dim IE As WebBrowser
    Dim objCollection As Object
    Dim rstFD As DAO.Recordset
    Dim rstFT As DAO.Recordset
    Dim strSQL As String
    Dim strFld As String
    'Dim col As Collection
    
    Set IE = Me.wb1.Object
    
    Application.SysCmd acSysCmdSetStatus, "Search form submission. Please wait..."
    
    Do While IE.Busy
        ' делаем небольшую задержку
        'Application.Wait DateAdd("s", 1, Now)
        Call Stoper(#12:00:01 AM#)
    Loop
    
    strSQL = ("SELECT tblSiteFieldType.StFTId, tblSiteFieldType.StFTName " _
            & "FROM (tblSiteFieldType INNER JOIN tblSiteField " _
                    & "ON tblSiteFieldType.StFTId = tblSiteField.StFldType) " _
                    & "INNER JOIN tblSiteFieldSet ON tblSiteField.StFldId = tblSiteFieldSet.SFSField " _
            & "WHERE (((tblSiteField.StFldUrl) = " & lngURL & ") " _
                & "AND ((tblSiteFieldSet.SFSSet)=" & lngSet & ")) " _
            & "GROUP BY tblSiteFieldType.StFTId, tblSiteFieldType.StFTName;")
    
    ' получаем набор типов полей
    Set rstFT = CurrentDb.OpenRecordset(strSQL)
    
    If rstFT.RecordCount > 0 Then rstFT.MoveFirst
    
    Do While Not rstFT.EOF
        
        Set objCollection = IE.Document.getElementsByTagName(rstFT!StFTName)
        
        strSQL = ("SELECT tblSiteField.StFldName, tblSiteField.StFldData " _
                & "FROM tblSiteField INNER JOIN tblSiteFieldSet ON tblSiteField.StFldId = tblSiteFieldSet.SFSField " _
                & "WHERE (((tblSiteField.StFldUrl)=" & lngURL & ") " _
                    & "AND ((tblSiteField.StFldType)=" & rstFT!StFTId & ")) " _
                    & "AND ((tblSiteFieldSet.SFSSet)=" & lngSet & ");")
        
        ' получаем набор полей и подставляемых в них данных
        Set rstFD = CurrentDb.OpenRecordset(strSQL)
        
        If rstFD.RecordCount > 0 Then rstFD.MoveFirst
        
        Do While Not rstFD.EOF
            strFld = rstFD!StFldName
            
            For i = 0 To objCollection.Length - 1
                'Debug.Print objCollection(i).Name
                If strFld = objCollection(i).Name Then
                    'Debug.Print objCollection(i).Name
                    objCollection(i).Value = rstFD!StFldData
                    
                    ' для корректной работы скрипта не выходим из цикла,
                    ' т.к. встречаются страницы с дублированными полями
                    'Exit For
                End If
            Next i
            
            rstFD.MoveNext
        Loop
        rstFD.Close
        
        rstFT.MoveNext
    Loop
    rstFT.Close
    
    Set objCollection = Nothing
    Set rstFD = Nothing
    Set rstFT = Nothing
    Set IE = Nothing
    
    Application.SysCmd acSysCmdSetStatus, "Поля заполнены. "
    
    MsgBox "Поля заполнены. ", vbInformation, Me.Caption
    
    Application.SysCmd acSysCmdSetStatus, " "
End Sub



Решение возможно не самое элегантное, но с поставленной задачей справляется и времени на разработку почти не потребовало.
Если нужно что-то посложнее, то можете взять за основу модель работы с браузером или погуглите варианты под используемый язык.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Программа для автоматического подключения к нескольким сайтам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]