Jibu la haraka
Angalia bei za Jumia, Takealot na Konga kwa kuunganisha aina ya bidhaa, muuzaji, sarafu na muktadha wa uwasilishaji. Kuanzia 15 Oktoba 2026, trafiki ya nyumbani ya AfricaProxies inaanza kwa US$ 0.50/GB, bila KYC na ufadhili wa crypto. Mfano wa Python unafanya ombi moja lililopakiwa kwenye lengo la HTTPS lililoidhinishwa; ruhusa za ufikiaji na matumizi ya kila muuzaji bado zinatawala utafiti halisi.
Ukweli muhimu
| Jumia Nigeria | Rekodi NGN na muuzaji sahihi na toleo la bidhaa |
|---|---|
| Takealot | Rekodi ZAR, masharti ya muuzaji na utekelezaji |
| Konga | Hifadhi ofa ya asili ya Nigeria na muktadha wa uwasilishaji |
| Njia ya kupata | Mfululizo wa biashara, API iliyoidhinishwa au ruhusa ya wazi ya ukusanyaji |
| Jaribio la mtandao | Ombi moja lililowekwa mipaka lililoruhusiwa; hakuna mielekeo ya kiotomatiki |
| Malipo | Trafiki ya data iliyotumwa na iliyopokelewa, ikiwa ni pamoja na vichwa vya habari |
Ninawezaje kuandaa rekodi ya bei za rejareja za Afrika inayoweza kulinganishwa?
Chagua njia ya data iliyoruhusiwa
Tumia chanzo cha muuzaji, API iliyoidhinishwa au ufikiaji ulioruhusiwa wazi. Weka mashamba yaliyoruhusiwa na mara ya kutokea kabla ya utafiti wa kurudiwa wa Jumia, Takealot au Konga.
Linganisha na ofa
Weka mfano, toleo, muuzaji, hali ya stock na idadi kuwa thabiti. Rekodi NGN au ZAR na mahali pa uwasilishaji; gharama ya usafirishaji iliyokosekana inabaki kuwa isiyojulikana badala ya sifuri.
Hifadhi uchunguzi wenye tarehe
Hifadhi URL ya chanzo, mbinu ya ukusanyaji na muda wa uchunguzi pamoja na bei ya asili ya sarafu ya ndani. Chukulia upatanuzi, kukataliwa au kikomo cha kiwango kama matokeo ya kupitia kabla ya kuendelea.
Ninachunguza mchanganyiko upi wa muuzaji na nchi?
Taja tovuti halisi ya nchi ya muuzaji kabla ya kukusanya rekodi. Jumia Nigeria na Jumia Kenya ni mazingira tofauti ya soko; Konga ni soko la Nigeria, wakati Takealot ni mfano wa rejareja wa Afrika Kusini. Weka sarafu ya awali na mahali pa mlengwa katika kila mstari. Nchi IP haitambui muuzaji, toleo la bidhaa au gharama ya mwisho ya uwasilishaji.
Ninawezaje kuzuia ulinganisho wa bei usio sahihi?
Linganisha modeli, uwezo, hali, muuzaji na muktadha wa usafirishaji. Weka hali ya bidhaa ya ofa mbali na bei yake. Ikiwa muuzaji mmoja anaorodhesha ada ya usafirishaji na mwingine hana, ripoti ushahidi huo uliopotea badala ya kuweka sifuri. Hifadhi URL ya chanzo na muda wa uchunguzi ili mhakiki aweze kutembelea ofa hiyo kamili tena. Ubadilishaji wa sarafu unapaswa kuwa katika hesabu ya tarehe tofauti.
Ni njia gani ya ukusanyaji ninayopaswa kutumia?
Pendekeza mfululizo uliotolewa na muuzaji au API iliyoidhinishwa kwa ukusanyaji wa kurudia. Vinginevyo pata ruhusa kwa ukurasa unaokusudiwa, mashamba na mara ya kuomba. Chunguza masharti ya ufikiaji ya mlengwa na mipaka iliyowekwa. Kuonekana kwa ukurasa wa umma si ruhusa ya jumla ya kuweka mifumo ya kiotomatiki. Simama kwenye ukatanifu wa ufikiaji au jibu la kuzuia na utatue njia iliyoidhinishwa kabla ya kuendelea.
import os
from urllib.parse import quote, urlsplit
import requests
# Only your own target or a URL covered by written permission.
target = os.environ["AUTHORIZED_TARGET_URL"]
allowed_host = os.environ["AUTHORIZED_TARGET_HOST"]
parts = urlsplit(target)
if (parts.scheme != "https" or parts.hostname != allowed_host
or parts.username or parts.password):
raise SystemExit("Target must match the authorized HTTPS host without embedded credentials")
user = quote(os.environ["PROXY_USER"] + "-country-ng", safe="")
password = quote(os.environ["PROXY_PASSWORD"], safe="")
proxy = f"http://{user}:{password}@gw.africaproxies.com:7777"
try:
with requests.Session() as session:
session.trust_env = False
with session.get(target, proxies={"http": proxy, "https": proxy},
timeout=(10, 30), allow_redirects=False, stream=True) as response:
response.raise_for_status()
if 300 <= response.status_code < 400:
raise SystemExit("Inspect and authorize the redirect separately")
total = 0
for chunk in response.iter_content(8192):
total += len(chunk)
if total > 1_000_000:
raise SystemExit("Sample body limit reached")
print({"status": response.status_code, "decoded_body_bytes": total})
except requests.exceptions.RequestException as error:
status = error.response.status_code if error.response is not None else "unavailable"
# Do not print the exception, URL, proxy address or chained traceback.
raise SystemExit(f"Request stopped: {type(error).__name__}; status={status}") from NoneSampuli hii ya utambuzi inapima nini?
Mfano unakagua hali ya usafirishaji na mwili wa jibu uliotafsiriwa uliowekwa kikomo. Hautotoa bei ya muuzaji, kutekeleza JavaScript ya kivinjari au kuripoti jumla ya trafiki ya data inayotozwa. Maombi yanaweza kufanya upunguzaji wa jibu, kwa hivyo ukubwa wa mwili uliotafsiriwa uliochapishwa si kipimo cha malipo ya proxy. Matumizi halisi ya akaunti yanajumuisha mwelekeo wote na vichwa vya habari. Msimbo hautafuata mielekeo hadi mwenyeji aliyelekwa aruhusiwe kwa utaratibu wa pekee.
Ninawezaje kupanua baada ya jaribio la kutambua matatizo kufanikiwa?
Kwanza thibitisha sampuli ndogo ilioruhusiwa kwa ajili ya ubora wa data na upeo wa kisheria. Tumia mzunguko wa ombi ulioruhusiwa na himili makosa kama hali badala ya thamani za bei zilizotengenezwa. Pima matumizi halisi ya akaunti kabla ya kupanga bajeti. Jibu la utambuzi la mafanikio halithibitishi kuwa akiba ya nchi itabaki inapatikana katika ratiba nzima. Hifadhi upatikanaji wa mji na usumbufu wa kipindi chenye IP ileile katika logi ya jaribio.
Maswali yanayoulizwa mara kwa mara
Je, ninaweza kuendesha mfano huu moja kwa moja kwenye ukurasa wowote wa Jumia?
Ni kama tu kama lengo hilo ni lako au ufikiaji unaopendekezwa umeruhusiwa. Weka mwenyeji wa lengo uliopitishwa na URL; mfano unachagua kwa makusudi mjahridishaji moja kwa moja. Bidhaa ya Jumia ikiwa inaonekana hadharani hairuhusu ukusanyaji wa mara kwa mara, kwa hivyo fafanua njia iliyoruhusiwa kabla ya kuendesha kodi.
Je, msimbo unakusanya taarifa za kukamilisha ununuzi au malipo?
Hapana. Mchakato unahusu ofa za umma zilizoidhinishwa badala ya taarifa za kuingia za malipo, rekodi za wateja au maelezo ya malipo. Milango ya benki na malipo imezuiliwa na sera ya huduma. Kwa utafiti wa Jumia, Takealot au Konga, rekodi bidhaa ya umma na muktadha wa uwasilishaji; tumia sandbox iliyoidhinishwa kwa ajili ya ukaguzi wa kiufundi wa kiolesi chako cha QA.
Jibu la 429 linamaanisha nini kwa mradi wangu?
Jibu la 429 linamwambia sampuli iache ili mipaka ya lengo na njia ya ufikiaji ilioruhusiwa iweze kukaguliwa. Usiongeze ushirikiano au ubadilishe vituo vya kutoka kulingana na kukataliwa huko. Hifadhi kundi la jibu na muda, pitia ruhusa ya mradi, na tumia chanzo kilichokubaliwa au API pale inapofaa.
Je, ukubwa wa mwili wa jibu baada ya kufumbuliwa ni sawa na GB zinazotozwa?
Hapana. Mwili wa jibu uliotafsiriwa unaochapishwa na Requests ni tofauti na uhasibu wa trafiki ya data wa huduma. Billing inajumuisha kupakia, kupakua na vichwa vya habari, wakati upunguzaji wa shinikizo unaweza kubadilisha ukubwa wa mwili unaoonyeshwa. Tumia trafiki ya data iliyopimwa ya akaunti kwa bajeti ya Jumia au Takealot, badala ya kuzidisha baiti za faili zilizohifadhiwa kwa idadi ya kurasa inayodhaniwa.
Nifanye nini kuhusu uelekezaji kwenda kikoa kingine?
Sampuli inasimama bila kufuata upatanuzi. Kagua mwenyeji wa mahali husika na sababu ya upatanuzi, na uidhinishe kando kabla ya kuiongeza kwenye mtiririko wa kazi. Biashara inaweza kutuma ofa kwenda kwenye eneo lingine la tovuti au njia ya akaunti; URL iliyoidhinishwa awali haidhinishi kiotomatiki lengo jipya hilo.
Ninawezaje kuzuia taarifa za kuingia zisionekane kwenye ripoti?
Tumia vigezo vya mazingira, taarifa za kuingia za mradi na kumbukumbu za uchunguzi ambazo taarifa nyeti zimefichwa. Usiwahi kuchapisha URL ya proxy iliyo na jina la mtumiaji na nenosiri ndani yake. Mfano huu hukataa taarifa za kuingia ndani ya URL lengwa na hushughulikia hitilafu za Requests bila kuchapisha anwani zao au mfululizo wa maelezo ya hitilafu zinazohusiana. Pia usiweke tokeni za hoja za utafutaji katika rekodi zinazoshirikiwa.
Vyanzo (1)
- Requests: advanced usage, proxies and streaming — Requests documentation (2026-10-14)