Ved tilfældighed opdagede jeg at app'en kommunikere med http://api.dba.dk/v1/, men deres webserver er snu og forlanger at man udgiver sig for at være 'iPhone' eller 'Android' i sin User-Agent header.
I virkeligheden var det nok bedre at finde en mere tro useragent, men deres parser er tilsyneladende glad hvis blot strengen indeholder endten iPhone eller Android.
Ved første øjekast har jeg fundet følgende endpoints på servicen:
http://api.dba.dk/public/v1/taxonomy
http://api.dba.dk/public/v1/ads
Den første returnere en række forskellige kategorier som man kan browse efter annoncer i, mens den anden er til at søge med, og tager en række parametre hvor af jeg ikke er sikker på hvad flere af dem gør, en af dem er dog lige ud af landevejen, nemlig q hvor man angiver hvad man vil søge efter.
Eksempel med curl:
curl -A 'iPhone' http://api.dba.dk/public/v1/ads?q=yamaha
Herunder et eksempel på de data man får:
Jeg er spændt på hvad folk ka finde på at opfinde med dette api :)
FAntsstisk havde selv kikket på at lave noget screen scraping.
ReplyDeletehar testet med curl og får "curl: (56) Recv failure: Connection reset by peer
" fejl når jeg prøver.
Jeg har lavet en Crawler til DBA som lister annoncer efter søgeord og sender en mail via smtp, når der kommer nye annoncer. Den bruger intet API udover HtmlAgility pack til .NET.
ReplyDeleteMen hold da kæft et fedt api.. Den lister jo alt fuldstændigt rent i XML format. Du har lige lettet mit arbejde så meget!
DeleteDen lister endda tlf. nr. på alle annoncer!
Velbekomme :)
DeleteLige et spørgsmål.. Har du de forskellige parametre som er tilgængelige? F.eks. område?
DeleteHvis man bruger URL'en så har den parametret ®=aarhus eller http://www.dba.dk/soeg/reg-koebenhavn/
:)
Jeg har ingen anelse - jeg troede faktisk at de havde lavet det om eller på anden måde lavet så man ikke bare ku tilgå det :)
DeleteArh øv. Kunne ellers være godt at kende gyldige parametre.
DeleteLige nu findes kun søgeord, antal annoncer vist, start fra annonce x, p= pris?, type privat, og sorteringstype f.eks. dato.
This comment has been removed by the author.
ReplyDeleteTak for info :-) User-Agent er ikke længere påkrævet.
ReplyDeleteEr der nogen der har parametrene ?
ReplyDeletehttp://api.dba.dk/public/v1/ads?q=kjole&ps=20&pn=2&p=(100-300)&f=xml&dt=private&as=200&sort=date-desc
ReplyDeleteSe her: http://api.dba.dk/public
Vil jeg kunne bruge noget af dette til at lave en app til Windows Phone eller Windows8???
ReplyDeletelån! lån!! lån!!!
ReplyDeleteLeder du efter et velrenommeret og akkrediteret privatlånselskab, der giver lån til livstidsmulighed. Vi tilbyder alle former for lån på en meget hurtig og nem måde, personlige lån, billån, boliglån, studielån, erhvervslån, investeringslån, gældskonsolidering og meget mere. Er du blevet afvist af banker og andre finansielle institutioner? Har du brug for et konsolideringslån eller et pant? Søg ikke mere som vi er her for at gøre alle dine økonomiske problemer en ting fra fortiden. Vi låner midler ud til enkeltpersoner og virksomheder, der har brug for økonomisk bistand til en sats på 2%. Ingen socialsikringsnummer kræves og ingen kreditcheck kræves, 100% garanteret. Jeg vil bruge dette medium til at informere dig om, at vi yder pålidelig og støttemodtager hjælp, og vi vil være glade for at tilbyde dig et lån.
Så send os en e-mail til: (victoriaemmanuelloan@gmail.com) for at ansøge nu om et lån.
Kære lånesøgere
ReplyDeleteHar du økonomiske vanskeligheder? Vil du starte din egen virksomhed? Dette lånefirma blev etableret menneskerettighedsorganisationer rundt omkring i verden med det ene formål at hjælpe de fattige og mennesker med økonomiske vanskeligheder i livet. Hvis du ønsker at ansøge om lån, skal du kontakte os igen med nedenstående email: elenanino0007@gmail.com
Navn:
Det krævede lånebeløb:
Lånetid:
Mobilnummer:
Tak og Gud velsigne
TILLID
Elena
Opmærksomhed,
ReplyDeleteSer du alvorligt efter et lån til at oprette en virksomhed eller betale dine regninger? Har du været skruet ned af banken eller andre långivere? Vær ikke mere bekymret for, at vi er her for at give dig det, du har set uden forsinkelse eller problemer, kontakt os venligst via email nedenfor for mere information i dag;
Email: easyloanfirm2020@gmail.com
Hilsen
Derek Douglas
easyloanfirm2020@gmail.com
3% tilgængelig lånetilbud
Opmærksomhed,
ReplyDeleteSer du alvorligt efter et lån til at oprette en virksomhed eller betale dine regninger? Har du været skruet ned af banken eller andre långivere? Vær ikke mere bekymret for, at vi er her for at give dig det, du har set uden forsinkelse eller problemer, kontakt os venligst via email nedenfor for mere information i dag;
Email: easyloanfirm2020@gmail.com
Hilsen
Derek Douglas
easyloanfirm2020@gmail.com
3% tilgængelig lånetilbud
Kære lånesøgere
ReplyDeleteDu i nogen økonomiske vanskeligheder? Vil du starte din egen virksomhed? Dette lånefirma blev etableret menneskerettighedsorganisationer rundt omkring i verden med det ene formål at hjælpe de fattige og mennesker med økonomiske vanskeligheder i livet. Hvis du ønsker at ansøge om lån, skal du kontakte os igen med nedenstående email: elenanino0007@gmail.com
Navn:
Det krævede lånebeløb:
Lånetid:
Mobilnummer:
Tak og Gud velsigne
TILLID
Elena
Har du brug for midler til at etablere din egen virksomhed Jeg hedder Shamla Biba, jeg er en privat långiver, der giver lån til privatpersoner og virksomheder. Nægtes så mange banker? Har du brug for finansiering til at etablere din virksomhed? har du brug for finansiering til at udvide din virksomhed? Har du brug for et personligt lån? kdfin11@gmail.com
ReplyDeleteTil dem der falder over artiklen: De har ændret api'et (ved dog ikke hvornår). Jeg har fiflet mig lidt frem til forskellige ting og leget stadig med det. Men i bund og grund har jeg extracted en masse endpoints ved at decompile deres android app, og fundet frem til at man kan bruge deres api med base url: string baseAPI = "https://api.dba.dk/";
ReplyDeleteDertil skal der sættes en DbaApiKey i headeren, frem for en User-Agent:
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.Headers["DbaApiKey"] = "64424762-f650-450f-909d-08d6d22703fd";
Bemærk at dette er .NET
Derfra kan man søge efter hvad man vil med denne:
string url = baseAPI + "api/v2/taxonomy/search?q="+searchQuery+"&format=json";
Hvor searchQuery er den string man søger efter. Så lister den alle de sections der er, samt hvor mange hits den har fundet på den pågældende string i hver section. Jeg har ikke lige segmentereret mere i det, men jeg leger videre med det :)
This comment has been removed by the author.
DeleteThis comment has been removed by the author.
DeleteSolved my problem via this header:
Delete"response = requests.get(url,headers={"DbaApiKey":"93d8cbae-ae89-47bb-a423-08d646555519","User-Agent":"dba/5.9 iPhone 12.1"},)"
@GET("api/v2/app/configuration")
ReplyDeleteObservable getAppConfigurationRequest();
@GET("api/v2/search/blog/section/{SectionId}")
Observable getBlogContentBySectionRequest(@Path("SectionId") Integer num);
@GET("api/v2/user")
Observable getCurrentUserRequest();
@GET("api/v2/social/followees")
Observable getFolloweesRequest();
@GET("api/v2/common/geocode")
Observable getGeocodeRequest(@Query("Address") String str, @Query("ZipCode") String str2, @Query("City") String str3, @Query("Country") String str4);
@GET("api/v2/tracking/global")
Observable getGlobalTrackingRequest();
@GET("api/v2/search/latest/category/{CategoryId}")
Observable getLatestSearchesRequest(@Path("CategoryId") Integer num);
@GET("api/v2/ads/{ExternalId}")
Observable getListingByExternalIdRequest(@Path("ExternalId") String str);
@GET("api/v2/messagecenter/items")
Observable getMessageCenterItemsRequest();
@GET("api/v2/messagecenter/state")
Observable getMessageCenterStateRequest();
@GET("api/v2/taxonomy/predict")
Observable getPredictiveTaxonomyRequest(@Query("Query") String str, @Query("SectionId") Integer num, @Query("CategoryId") Integer num2);
@GET("api/v2/user/profile")
Observable getProfileRequest();
@GET("api/v2/notifications/resolve-location")
Observable getResolveLocationRequest(@Query("Data") String str);
@GET("resources")
Observable> getResources(@Query("apiKey") String str);
@GET("api/v2/listing/{ExternalId}/secondaryinfo")
Observable getSecondaryListingInfoRequest(@Path("ExternalId") String str, @Query("VipType") String str2);
@GET("api/v2/soi/{SellerId}")
Observable getSellersOtherItemsRequest(@Path("SellerId") String str, @Query("ownerType") Integer num, @Query("page") Integer num2, @Query("pageSize") Integer num3);
@GET("api/v2/soi/profile/{SellerId}")
Observable getSellersProfileRequest(@Path("SellerId") String str, @Query("ownerType") String str2);
@GET("api/v2/users")
Observable getStartCreateUserRequest();
@GET("api/v2/listing/{ExternalId}/complain")
Observable getStartListingComplaintRequest(@Path("ExternalId") String str);
@GET("api/v2/common/startup-message")
Observable getStartupMessageRequest();
@GET("api/v2/syi/externalid/{ExternalId}/allowedlistingactions")
Observable getSyiAllowedListingActionsRequest(@Path("ExternalId") Integer num, @Query("VipType") String str);
@GET("api/v2/syi/externalid/{ExternalId}")
Observable getSyiStateByExternalIdRequest(@Path("ExternalId") Integer num);
@GET("api/v2/syi/syiid/{SyiId}")
Observable getSyiStateRequest(@Path("SyiId") String str);
@GET("api/v2/taxonomy")
Observable> getTaxonomyRequest();
@GET("api/v2/taxonomy/search")
Observable> getTaxonomySearchRequest(@Query("q") String str);
Jeg får 403: forbidden, når jeg kører på kategori.
ReplyDeleteMin header er:
"{'User-Agent': 'dba/5.9 iPhone 12.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'DbaApiKey': '93d8cbae-ae89-47bb-a423-08d646555519'}
"
Jeg requester med "
baseAPI = "https://api.dba.dk"
CategoryId = str(36020)
url = baseAPI + "/api/v2/search/latest/category/" + CategoryId
"
Har du et bud på at omgå 403?
Jeg er Saara Kemi, der er en privatlånsudlåner, der yder en anden type lån til enkeltpersoner / virksomheder over hele kloden universet med en hastighed på 3%, hvis interesseret venligst kontakt mig via e-mail: saara.kemi@gmail.com
ReplyDeleteKære låneansøgere
ReplyDeleteEr du i økonomiske vanskeligheder? Vil du starte din egen virksomhed? Dette lånefirma blev etableret menneskerettighedsorganisationer over hele verden med det eneste formål at hjælpe de fattige og mennesker med økonomiske vanskeligheder i livet. Hvis du ønsker at ansøge om et lån, så kom tilbage til os med nedenstående e-mail-adresse: elenanino0007@gmail.com
Navn:
Påkrævet lånebeløb:
Lånetid:
Mobilnummer:
Tak og Gud velsigne
TILLID
Elena