ଏମ୍ବେଡ୍ ହୋଇଥିବା JSON ରୁ ପ୍ରକ୍ସି IP ଏବଂ ହେକ୍ସ ପୋର୍ଟ ବାହାର କରନ୍ତୁ
ପ୍ରକ୍ସି ତାଲିକାର ସ୍କ୍ରିପ୍ଟ କଲରୁ ଜଣା JSON ପେଲୋଡ୍ ଡିକୋଡ୍ କରନ୍ତୁ ଏବଂ ଉତ୍ସ ଫର୍ମାଟ୍ ଘୋଷଣା କଲେ ହିଁ ହେକ୍ସ ପୋର୍ଟକୁ ବ୍ୟାଖ୍ୟା କରନ୍ତୁ।
ଖାଲି HTML ଟେବୁଲ୍ ଅର୍ଥ ନୁହେଁ ଯେ ପ୍ରତିକ୍ରିୟାରେ କୌଣସି ପ୍ରକ୍ସି ରେକର୍ଡ ନାହିଁ। କିଛି ତାଲିକା JavaScript କଲ ଭିତରେ JSON ବସ୍ତୁ ରଖନ୍ତି ଏବଂ ପରେ ଧାଡ଼ିଗୁଡ଼ିକ ଭରନ୍ତି।
ପୂର୍ବରୁ ମିଳିଥିବା ଉତ୍ସ ନିର୍ଦ୍ଦିଷ୍ଟ ର୍ୟାପର gp.insertPrx ଏବଂ ତା’ପରେ JSON ବସ୍ତୁ ବ୍ୟବହାର କଲେ:
import ipaddress
import json
import re
decoder = json.JSONDecoder()
endpoints = set()
for marker in re.finditer(r"gp[.]insertPrx\(\s*", html):
try:
row, end = decoder.raw_decode(html, marker.end())
if not isinstance(row, dict):
continue
address = ipaddress.ip_address(row["PROXY_IP"])
port = int(row["PROXY_PORT"], 16)
except (ValueError, KeyError, TypeError):
continue
if 1 <= port <= 65535 and html[end:].lstrip().startswith(");"):
endpoints.add((str(address), port))
html ହେଉଛି ଉତ୍ସର ପାଠ୍ୟ, ବ୍ରାଉଜର ବସ୍ତୁ ନୁହେଁ। ନିୟମିତ ଅଭିବ୍ୟକ୍ତି ଜଣା ର୍ୟାପର ଖୋଜେ; JSONDecoder JSON ମୂଲ୍ୟ କେଉଁଠି ଶେଷ ହୁଏ ତାହା ନିର୍ଣ୍ଣୟ କରେ। ଏହା କେବଳ ନିୟମିତ ଅଭିବ୍ୟକ୍ତିରେ ନେଷ୍ଟେଡ୍ JSON ପାର୍ସ କରିବାର ପ୍ରୟାସକୁ ଏଡ଼ାଏ।
ଉଦାହରଣର ପୋର୍ଟ କ୍ଷେତ୍ର ସ୍ପଷ୍ଟ ଭାବରେ ହେକ୍ସାଡେସିମାଲ: C38 ଅର୍ଥ ଦଶମିକ 3128। ଉଭୟକୁ ପୋର୍ଟ କୁହାଯାଏ ବୋଲି ଅନ୍ୟ ପ୍ରଦାନକାରୀର ଦଶମିକ କ୍ଷେତ୍ରରେ ଆଧାର 16 ଲଗାନ୍ତୁ ନାହିଁ।
ଏହା ଉଲ୍ଲେଖିତ ଫର୍ମାଟ ପାଇଁ ପାର୍ସର, JavaScript ଇଣ୍ଟରପ୍ରିଟର ନୁହେଁ। ଏକକ ଉଦ୍ଧୃତି ବସ୍ତୁ ଲିଟେରାଲ, ଗଣନା କରାଯାଇଥିବା ମୂଲ୍ୟ ଏବଂ ଅନ୍ୟ JavaScript ଅଭିବ୍ୟକ୍ତି ପାଇଁ ଅନ୍ୟ ଏକ ଡକ୍ୟୁମେଣ୍ଟେଡ୍ ଡାଟା ଇଣ୍ଟରଫେସ୍ ଦରକାର। ଏଣ୍ଡପଏଣ୍ଟ ତାଲିକା ପାଇବା ପାଇଁ ମନଇଚ୍ଛା ପୃଷ୍ଠା କୋଡ୍ ଚଲାନ୍ତୁ ନାହିଁ।
ଉତ୍ସର ଚୁକ୍ତି ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପ୍ରୋଟୋକଲ କ୍ଷେତ୍ରକୁ ଅଲଗା ରଖନ୍ତୁ। ଉତ୍ସରେ ବରଂ ଭରା HTML ଧାଡ଼ି ଥିଲେ ଏହି JavaScript ର୍ୟାପର ପାର୍ସର ବଦଳେ ଧାଡ଼ି-ଭିତ୍ତିକ ଏଣ୍ଡପଏଣ୍ଟ ନିଷ୍କାସନ ବ୍ୟବହାର କରନ୍ତୁ। ଠିକଣା ଏବଂ ପୋର୍ଟ ବାହାର କରିବା ପ୍ରମାଣ କରେ ନାହିଁ ଯେ ଏଣ୍ଡପଏଣ୍ଟ ବର୍ତ୍ତମାନ ବ୍ୟବହାରଯୋଗ୍ୟ ପ୍ରକ୍ସି ସେବା ଦେଉଛି।