Wednesday, November 9, 2011

Hemmelig DBA api

Jeg besøger ofte Den Blå Avis når jeg leder efter diverse bras som jeg synes er for dyrt at handle nyt men DBA er efterhånden fuldstændigt forsvundet i alverdens reklamer og forhandler annoncer, for et halvt års tiden siden udgav DBA en Android app.

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 :)

33 comments:

  1. FAntsstisk havde selv kikket på at lave noget screen scraping.
    har testet med curl og får "curl: (56) Recv failure: Connection reset by peer
    " fejl når jeg prøver.

    ReplyDelete
  2. 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.

    ReplyDelete
    Replies
    1. Men 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!

      Den lister endda tlf. nr. på alle annoncer!

      Delete
    2. Lige et spørgsmål.. Har du de forskellige parametre som er tilgængelige? F.eks. område?

      Hvis man bruger URL'en så har den parametret &reg=aarhus eller http://www.dba.dk/soeg/reg-koebenhavn/

      :)

      Delete
    3. 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 :)

      Delete
    4. Arh øv. Kunne ellers være godt at kende gyldige parametre.

      Lige nu findes kun søgeord, antal annoncer vist, start fra annonce x, p= pris?, type privat, og sorteringstype f.eks. dato.

      Delete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Tak for info :-) User-Agent er ikke længere påkrævet.

    ReplyDelete
  5. http://api.dba.dk/public/v1/ads?q=kjole&ps=20&pn=2&p=(100-300)&f=xml&dt=private&as=200&sort=date-desc

    Se her: http://api.dba.dk/public

    ReplyDelete
  6. Vil jeg kunne bruge noget af dette til at lave en app til Windows Phone eller Windows8???

    ReplyDelete
  7. lån! lån!! lån!!!
    Leder 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.

    ReplyDelete
  8. Kære lånesøgere

    Har 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

    ReplyDelete
  9. Opmærksomhed,

    Ser 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

    ReplyDelete
  10. Opmærksomhed,

    Ser 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

    ReplyDelete
  11. Kære lånesøgere

    Du 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

    ReplyDelete
  12. 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

    ReplyDelete
  13. Til 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/";

    Dertil 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 :)

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. This comment has been removed by the author.

      Delete
    3. Solved my problem via this header:
      "response = requests.get(url,headers={"DbaApiKey":"93d8cbae-ae89-47bb-a423-08d646555519","User-Agent":"dba/5.9 iPhone 12.1"},)"

      Delete
  14. @GET("api/v2/app/configuration")
    Observable 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);

    ReplyDelete
  15. Jeg får 403: forbidden, når jeg kører på kategori.
    Min 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?

    ReplyDelete
    Replies
    1. Prøv med v3 istedet for v2

      Delete
    2. Den key du bruger virker ikke mere brug den anden for android der blev postet tideligere

      Delete
  16. 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

    ReplyDelete
  17. Kære låneansøgere

    Er 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

    ReplyDelete
  18. Hvis der stadig er nogle der gerne vil have et DBA API lib i c++ findes der et her:
    https://github.com/AnzoDK/LibDBA

    hvis linket bliver fjernet er det her med mellemrum

    h t t p s :// github .com/AnzoDK/LibDBA

    Det er stadig ikke kommet ret langt, men hey - det er github, så man kan altid selv arbejde videre

    ReplyDelete
  19. Hej,

    Er du træt af at søge lån og prioritetslån, er du konstant blevet afvist af dine banker og andre finansielle institutioner, Vi tilbyder enhver form for lån til enkeltpersoner og virksomheder med en lav rente på 3%. Hvis du er interesseret i at tage et lån er du velkommen til at kontakte os i dag, vi lover at tilbyde dig de bedste tjenester nogensinde Bare prøv os, for et forsøg vil overbevise dig.

    Hvad er dine økonomiske behov?
    Har du brug for et erhvervslån?
    Har du brug for et personligt lån?
    Vil du købe en bil?
    Vil du refinansiere?
    Har du brug for et realkreditlån?
    Har du brug for en enorm kapital for at starte dit forretningsforslag eller udvidelse?

    Har du mistet håbet, og du tror, ​​der ikke er nogen udvej, og dine økonomiske byrder stadig vedvarer?

    Tøv ikke med at kontakte os for et muligt forretningssamarbejde Kontakt os via e-mail: saara.kemi@gmail.com

    Med venlig hilsen
    Fru Saara Kemi

    ReplyDelete
  20. Hej mine damer og herrer, har du brug for økonomisk hjælp? Jeg er Max Bent. Jeg er långiver og også finansiel rådgiver.

    Har du brug for et presserende lån for at klare din gæld, eller har du brug for et aktielån for at forbedre din virksomhed? Er du blevet afvist af banker og andre finansielle agenturer? Har du brug for en lånekonsolidering eller et realkreditlån? Søg ikke mere, da vi er her for at gøre alle dine økonomiske problemer til fortiden. Kontakt os via e-mail:

    oceanfmortgages@gmail.com
    oceanfmortgages@gmail.com

    Dette er Ocean Finance-realkreditlån. Vi tilbyder lån til interesserede i en rimelig rente på 2%. Området spænder fra 5.000,00 Euro til maksimalt 100.000.000,00 Euro.

    ReplyDelete
  21. Trenger du et lån? Send oss ??en remy.credit111@gmail.com e-post (remy.credit111@gmail.com) remy.credit111@gmail.com Hei Hvordan har du det i dag?? Trenger du et presserende lån nå innen de neste 6 timene uten stress eller forsinkelse REMY. CREDIT er her for å løse alle problemene dine i dag, vi gir lån til 2% rente og send oss ??en e-post nå for det presserende lånet dittSend oss ??en e-post email; remy.credit111@gmail.com (remy.credit111@gmail.com)
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com
    e-post email; remy.credit111@gmail.com

    ReplyDelete
  22. Jeg hedder Ingrid, jeg vil gerne dele et bemærkelsesværdigt vidnesbyrd om, hvordan jeg fik 200.000 Euro, LÅN gennem ELENA NINO kreditinvestering og alle slags. hvis du er interesseret i et lån kontakt på e-mail: elenanino0007@gmail.com

    ReplyDelete