当前位置: 首页>C++>正文

中國工商網商標查詢,工商局爬蟲 商標網爬蟲

中國工商網商標查詢,工商局爬蟲 商標網爬蟲

本文章不涉及到具體方法 只是提供一個思路,只做學術交流討論,不得違法。

國家企業信用信息公示系統及30多個省份的子系統均采用了加速樂和極驗的反扒,并且即使拿到了cookie后,獲取所有詳情也很費勁,每一部分數據都是一個請求,算下來一個公司少說也有三四十個請求才能完整地獲取所有數據;

主要有5個cookie:__jsluid_h, __jsl_clearance, JSESSIONID, SECTOKEN, tlb_cookie


下面附請求步驟及源碼:
1、第一次訪問http://www.gsxt.gov.cn/index.html

中國工商網商標查詢?得到響應,HTTP狀態碼521,響應內容為混淆后的js代碼:<script>document.cookie=('_')+('_')+? ? ('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('=')+((+true)+'')+......m')+('a')+? ? ? ('x')+('-')+('a')+('g')+('e')+('=')+((2^1)+'')+(6+'')+(~~{}+'')+((+[])+'')+(';')+('p')+('a')+('t')+('h')+('=')+? ? ('/');location.href=location.pathname+location.search</script>,處理字符串刪掉=前和;后的代? ? 碼,使用python js引擎執行該段代碼會得到__jsl_clearance的值,__jsluid_h 的值在? ? ? ? ? ? ? ? ? ? headers[‘Set-Cookie’]取得。


2、帶著第一步算出來的兩個cookies第二次訪問http://www.gsxt.gov.cn/index.html, 得到響應,?HTTP狀態碼521,響應內容為混淆后的js代碼,使用正則處理后取得我們想要的代碼段,加密算法有三種,sha1,sha256和md5,直接懟就行。


3、使用第二步算出的更新后的__jsl_clearance的值和第一步的__jsluid_h 的值第三次訪問http://www.gsxt.gov.cn/index.html, 得到響應,HTTP狀態碼200,第三次請求的headers里會有我們想要的另外三個cookies:JSESSIONID, SECTOKEN, tlb_cookie,拼接好這5個cookie就可以訪問拿數據了。下面附請求腳本,注意:全流程需要使用相同的代理ip,cookie和ip是有綁定的。

ex1 = re.compile(r'(?<=cookie=).+(?=;location.href)')
ex2 = re.compile(r'(?<=;go\().+(?=\)</script>)')
?
?
class GetJslCookie:
? ? """
? ? 獲取jsl_cookie,加速樂cookie與ip綁定
? ? 傳入調用類的代理,返回jslcookie和代理(如果代理過期有變化返回新代理,后續流程攜帶新代理進行請求)
? ? """
?
? ? def __init__(self, in_proxy):
? ? ? ? self.headers = {
? ? ? ? ? ? "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,"
? ? ? ? ? ? ? ? ? ? ? "*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
? ? ? ? ? ? "Accept-Encoding": "gzip, deflate",
? ? ? ? ? ? "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
? ? ? ? ? ? "Cache-Control": "max-age=0",
? ? ? ? ? ? "Upgrade-Insecure-Requests": "1",
? ? ? ? ? ? "Referrer": "http://www.gsxt.gov.cn/index.html",
? ? ? ? ? ? "Host": "www.gsxt.gov.cn",
? ? ? ? ? ? "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) "
? ? ? ? ? ? ? ? ? ? ? ? ? "Chrome/86.0.4240.193 Safari/537.36"
? ? ? ? }
? ? ? ? self.pro = ProxyGenerator()
? ? ? ? self.proxy = in_proxy
?
? ? @staticmethod
? ? def get_hash(msg, flag):
? ? ? ? """jsl cookie 計算"""
? ? ? ? if flag == 'md5':
? ? ? ? ? ? md5 = hashlib.md5()
? ? ? ? ? ? md5.update(msg)
? ? ? ? ? ? return md5.hexdigest()
? ? ? ? elif flag == 'sha1':
? ? ? ? ? ? sha1 = hashlib.sha1()
? ? ? ? ? ? sha1.update(msg)
? ? ? ? ? ? return sha1.hexdigest()
? ? ? ? elif flag == 'sha256':
? ? ? ? ? ? sha256 = hashlib.sha256()
? ? ? ? ? ? sha256.update(msg)
? ? ? ? ? ? return sha256.hexdigest()
? ? ? ? else:
? ? ? ? ? ? raise Exception("get_hash flag err")
?
? ? def jsl_cookie(self, url):
? ? ? ? """
? ? ? ? 需要進行兩次請求才能獲取到jsl的cookie
? ? ? ? :param url: url
? ? ? ? :return: None 函數中會對self.headers['cookie']進行賦值
? ? ? ? """
? ? ? ? for _ in range(5):
? ? ? ? ? ? try:
? ? ? ? ? ? ? ? if self.headers.get("cookie"):
? ? ? ? ? ? ? ? ? ? del self.headers['cookie']
? ? ? ? ? ? ? ? logging.debug(f'第{_}次,jsl第一次請求,proxy={self.proxy}')
? ? ? ? ? ? ? ? rsp = RequestMethod.ip_requests(url, headers=self.headers, proxies=self.proxy)
? ? ? ? ? ? ? ? if rsp == -1:
? ? ? ? ? ? ? ? ? ? self.proxy = self.pro.get_proxy()
? ? ? ? ? ? ? ? ? ? logging.info(f"重新獲取proxy={self.proxy}")
? ? ? ? ? ? ? ? ? ? time.sleep(random.random() * 2)
? ? ? ? ? ? ? ? ? ? continue
?
? ? ? ? ? ? ? ? first_js_code = re.findall(ex1, rsp.text)[0]
? ? ? ? ? ? ? ? js_ctx = execjs.compile(
? ? ? ? ? ? ? ? ? ? "function cookie() {return " + first_js_code + ";}")
? ? ? ? ? ? ? ? cookie_1 = js_ctx.call("cookie") + ';' + rsp.headers.get('Set-Cookie')
? ? ? ? ? ? ? ? cookie_dict = {}
? ? ? ? ? ? ? ? for cook in cookie_1.split(';'):
? ? ? ? ? ? ? ? ? ? if len(cook.split('=')) == 2:
? ? ? ? ? ? ? ? ? ? ? ? k, value = cook.split('=')
? ? ? ? ? ? ? ? ? ? ? ? cookie_dict[k.strip()] = value.strip()
?
? ? ? ? ? ? ? ? logging.debug('給第二次請求的headers構造cookie')
? ? ? ? ? ? ? ? __jsl_clearance = cookie_dict.get('__jsl_clearance')
? ? ? ? ? ? ? ? __jsluid_h = cookie_dict.get('__jsluid_h')
? ? ? ? ? ? ? ? self.headers['cookie'] = f'__jsl_clearance={__jsl_clearance}; __jsluid_h={__jsluid_h}'
? ? ? ? ? ? ? ? logging.debug(f'第{_}次,jsl第二次請求,proxy={self.proxy}')
? ? ? ? ? ? ? ? rsp = RequestMethod.ip_requests(url, headers=self.headers, proxies=self.proxy)
? ? ? ? ? ? ? ? if rsp == -1:
? ? ? ? ? ? ? ? ? ? self.proxy = self.pro.get_proxy()
? ? ? ? ? ? ? ? ? ? logging.info(f"重新獲取1proxy={self.proxy}")
? ? ? ? ? ? ? ? ? ? time.sleep(random.random() * 2)
? ? ? ? ? ? ? ? ? ? continue
?
? ? ? ? ? ? ? ? if 'document.cookie' in rsp.text:
? ? ? ? ? ? ? ? ? ? logging.debug("rsp.text 第二次還是521")
? ? ? ? ? ? ? ? ? ? self.proxy = self.pro.get_proxy()
? ? ? ? ? ? ? ? ? ? del self.headers['cookie']
? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? __jsl_clearance = self.get_jsl_clearance(json.loads(re.findall(ex2, rsp.text)[0]))
? ? ? ? ? ? ? ? if __jsl_clearance:
? ? ? ? ? ? ? ? ? ? logging.debug(f'第{_}次,獲取__jsl_clearance成功')
? ? ? ? ? ? ? ? ? ? return f'__jsl_clearance={__jsl_clearance}; __jsluid_h={__jsluid_h}', self.proxy
? ? ? ? ? ? except Exception as exp:
? ? ? ? ? ? ? ? self.proxy = self.pro.get_proxy()
? ? ? ? ? ? ? ? logging.error(f'獲取__jsl_clearance異常--{exp},eline-{exp.__traceback__.tb_lineno}')
?
? ? def get_jsl_clearance(self, data):
? ? ? ? """獲取jsl_clearance參數"""
? ? ? ? chars = data.get('chars')
? ? ? ? bts = data.get('bts')
? ? ? ? c_t = data.get('ct')
? ? ? ? h_a = data.get('ha')
? ? ? ? for chars_1 in chars:
? ? ? ? ? ? for chars_2 in chars:
? ? ? ? ? ? ? ? __jsl_clearance = bts[0] + chars_1 + chars_2 + bts[1]
? ? ? ? ? ? ? ? if self.get_hash(__jsl_clearance.encode('utf-8'), h_a) == c_t:
? ? ? ? ? ? ? ? ? ? return __jsl_clearance
? ? ? ? return None

————————————————
?

有感興趣的小伙伴可以加我微信一起討論學習:gxfc17739955997

上海商標注冊、

https://www.nshth.com/cplus/338489.html
>

相关文章:

  • 中國工商網商標查詢
  • 上海商標注冊
  • 工商局網上注冊入口
  • 商標注冊查詢標庫網
  • 河北工商網
  • 大連工商局官網查詢
  • 中國工商局官網登錄
  • 國家商標網查詢商標局官網
  • 樹莓派的控制方法,第二篇 樹莓派基本外設基礎篇
  • 手機如何連接外設,iOS連接外設的幾種方式
  • switch可以外接鍵鼠嗎,別再給手機外接OTG鍵鼠玩刺激戰場了:其實還能這樣操作
  • [阿發你好]C/C++學習指南
  • 輸入法哪個最好用,wsl2中安裝中文輸入法
  • 字符串中引入變量方法,字符串處理、變量初始值處理、擴展的腳本技巧、正則表達式
  • 某計算機內存容量是512kb,某計算機主存容量為512kb,Cache容量為16kb,每塊有16個字,每字32位。 (1...
  • 中國工商網商標查詢,工商局爬蟲 商標網爬蟲
  • iOS真機調試TestFlight安裝及提交App Store審核教程
  • 蘋果app上架流程,小白如何在ios中安裝ios上架
  • 蘋果彈出提交表格是什么,蘋果TestFlight測試操作圖文教程(測試后提交App Store審核)
  • 四門外語傍身:外語,讓我的大學如此完美
  • D3D Surface/Texture SDL DDraw渲染視頻的區別和疑問
  • 手機VR播放器,Android VR Player(全景視頻播放器) [10]: VR全景視頻渲染播放的實現(exoplayer,glsurfaceview,o
  • Qt渲染視頻常見問題(視頻渲染窗口上子窗口設置透明出現陰影問題、主窗口縮放導致視頻渲染窗口部分出現視頻閃爍問題)
  • 視頻解析網站源碼,ijkplayer源碼分析 視頻渲染流程
  • 一分鐘的視頻渲染要多久,基礎教程|如何在數分鐘時間內渲染超清精美視頻?
  • Metal(六) 案例之視頻文件的渲染
  • flutter開發小程序,最強整理!寫給程序員的Flutter詳細教程,大廠直通車!
  • c++黑客編程揭秘與防范,C/C++截獲騰訊QQ網絡聊天系統內容和登錄密碼,教你做一個黑客!
  • 支付行業具體做什么,做支付需要了解哪些行業知識
  • 5大底層邏輯,淺談HyperLogLog底層算法邏輯
  • c++實現復數的加減乘除,【C++】輔助C++計算復數(代碼解釋的很清楚)
  • nlogn的算法有哪些,算法運行時間1、logN、N、NlogN 、N^2、N^3、2^n之間的比較
  • 開源圖片庫,幾種常用圖像處理開源庫簡介及使用總結
  • 圖像處理和計算機視覺,《圖像處理與計算機視覺算法及應用》讀后感
  • gps定位,側邊欄固定定位到版心兩側
  • css版心怎么設置,[css]版心和布局流程
  • 瀏覽器多個窗口怎么設置在一個頁面,網頁多種版心適應多屏幕技巧
  • 前端學習之版心和布局流程