修复切换语言功能xpath会变的问题
This commit is contained in:
@@ -703,7 +703,9 @@ from lxml import html
|
|||||||
# raise OperationFailed(f'参数错误, response: {response.text}')
|
# raise OperationFailed(f'参数错误, response: {response.text}')
|
||||||
|
|
||||||
|
|
||||||
def sleep(a, b):
|
def sleep(a, b=None):
|
||||||
|
if not b:
|
||||||
|
return time.sleep(a)
|
||||||
return time.sleep(round(random.uniform(a, b), 1))
|
return time.sleep(round(random.uniform(a, b), 1))
|
||||||
|
|
||||||
|
|
||||||
@@ -735,7 +737,7 @@ def update_windows_distinguish(x=1920, y=1080):
|
|||||||
|
|
||||||
def _change_language(page):
|
def _change_language(page):
|
||||||
sleep(1, 2)
|
sleep(1, 2)
|
||||||
page.click('//*[@id="«R1ldm6l6ismipapd5aq»"]/*[2]')
|
page.locator('//*[@style="height:40px;width:40px"]').first.click()
|
||||||
sleep(1, 2)
|
sleep(1, 2)
|
||||||
page.click('//div[@role="listitem" and @class="x1n2onr6 x1ja2u2z x9f619 x78zum5 xdt5ytf x2lah0s x193iq5w"][1]')
|
page.click('//div[@role="listitem" and @class="x1n2onr6 x1ja2u2z x9f619 x78zum5 xdt5ytf x2lah0s x193iq5w"][1]')
|
||||||
sleep(1, 2)
|
sleep(1, 2)
|
||||||
@@ -778,35 +780,40 @@ def parse_cookies(cookies):
|
|||||||
return cookies
|
return cookies
|
||||||
|
|
||||||
|
|
||||||
def check_account_status(page):
|
def check_account_status(page, cookies):
|
||||||
try:
|
try:
|
||||||
_change_language(page)
|
_change_language(page)
|
||||||
except TimeoutError:
|
except TimeoutError:
|
||||||
page.set_default_timeout(3000)
|
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.7',
|
||||||
try:
|
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
||||||
# 账户被暂停
|
'cache-control': 'max-age=0',
|
||||||
suspended_span = page.query_selector_all('//span[text()="We suspended your account"]')
|
'dpr': '2',
|
||||||
if suspended_span:
|
'priority': 'u=0, i',
|
||||||
raise AuthException('该账户被暂停', 'frozen')
|
'referer': 'https://www.facebook.com/',
|
||||||
except TimeoutError:
|
'sec-ch-prefers-color-scheme': 'light',
|
||||||
pass
|
'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
|
||||||
|
'sec-ch-ua-full-version-list': '"Chromium";v="134.0.6998.89", "Not:A-Brand";v="24.0.0.0", "Google Chrome";v="134.0.6998.89"',
|
||||||
try:
|
'sec-ch-ua-mobile': '?0',
|
||||||
# 被封
|
'sec-ch-ua-model': '""',
|
||||||
lock_img = page.query_selector_all('//img[@src="/images/checkpoint/epsilon/comet/intro.png"]')
|
'sec-ch-ua-platform': '"macOS"',
|
||||||
if lock_img:
|
'sec-ch-ua-platform-version': '"15.3.2"',
|
||||||
raise AuthException('该账户已被封禁', 'frozen')
|
'sec-fetch-dest': 'document',
|
||||||
except TimeoutError:
|
'sec-fetch-mode': 'navigate',
|
||||||
pass
|
'sec-fetch-site': 'same-origin',
|
||||||
|
'sec-fetch-user': '?1',
|
||||||
try:
|
'upgrade-insecure-requests': '1',
|
||||||
# 无法登录 无效cookies
|
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
|
||||||
login_btn = page.query_selector_all('//button[@name="login"]')
|
'viewport-width': '743',
|
||||||
if login_btn:
|
}
|
||||||
raise AuthException('该账户登录状态失效', 'invalid')
|
cookies = {i['name']: i['value'] for i in cookies}
|
||||||
except TimeoutError:
|
uid = cookies['c_user']
|
||||||
pass
|
url = f"https://graph.facebook.com/{uid}/picture?type=normal"
|
||||||
|
response = requests.get(url, headers=headers, allow_redirects=False)
|
||||||
|
if response.status_code == 302:
|
||||||
|
if response.headers.get('Location') == 'https://static.xx.fbcdn.net/rsrc.php/v1/yh/r/C5yt7Cqf3zU.jpg':
|
||||||
|
raise AuthException('该账号已被冻结', 'frozen')
|
||||||
|
else:
|
||||||
raise OperationFailed('操作超时或该账户异常,请重试')
|
raise OperationFailed('操作超时或该账户异常,请重试')
|
||||||
|
|
||||||
|
|
||||||
@@ -835,7 +842,7 @@ def playwright_like(cookies, target_url):
|
|||||||
page.goto(url)
|
page.goto(url)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
page.goto(url)
|
page.goto(url)
|
||||||
check_account_status(page)
|
check_account_status(page, parse_cookies(cookies))
|
||||||
|
|
||||||
if 'permalink.php?story_fbid' in target_url or '/posts/' in target_url:
|
if 'permalink.php?story_fbid' in target_url or '/posts/' in target_url:
|
||||||
# 文字或图片类型
|
# 文字或图片类型
|
||||||
@@ -885,7 +892,7 @@ def playwright_post(cookies, content, image_key=None):
|
|||||||
page.goto(url)
|
page.goto(url)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
page.goto(url)
|
page.goto(url)
|
||||||
check_account_status(page)
|
check_account_status(page, parse_cookies(cookies))
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
|
||||||
if image_key:
|
if image_key:
|
||||||
@@ -942,7 +949,7 @@ def playwright_comment(cookies, target_url, content, image_key=None):
|
|||||||
url = 'https://facebook.com'
|
url = 'https://facebook.com'
|
||||||
try:
|
try:
|
||||||
page.goto(url)
|
page.goto(url)
|
||||||
check_account_status(page)
|
check_account_status(page, parse_cookies(cookies))
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
|
||||||
page.goto(target_url)
|
page.goto(target_url)
|
||||||
@@ -1019,7 +1026,7 @@ def playwright_get_user_profile(cookies, username=None):
|
|||||||
page.goto(url)
|
page.goto(url)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
page.goto(url)
|
page.goto(url)
|
||||||
check_account_status(page)
|
check_account_status(page, parse_cookies(cookies))
|
||||||
|
|
||||||
profile_pic_url = page.locator(
|
profile_pic_url = page.locator(
|
||||||
'//div[@aria-label="Shortcuts"]//li[1]//*[@preserveAspectRatio="xMidYMid slice"]').get_attribute(
|
'//div[@aria-label="Shortcuts"]//li[1]//*[@preserveAspectRatio="xMidYMid slice"]').get_attribute(
|
||||||
@@ -1068,7 +1075,7 @@ def playwright_set_user_profile(cookies, username=None, first_name=None, last_na
|
|||||||
page.goto(url)
|
page.goto(url)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
page.goto(url)
|
page.goto(url)
|
||||||
check_account_status(page)
|
check_account_status(page, parse_cookies(cookies))
|
||||||
|
|
||||||
url = 'https://accountscenter.facebook.com/?entry_point=app_settings'
|
url = 'https://accountscenter.facebook.com/?entry_point=app_settings'
|
||||||
page.goto(url)
|
page.goto(url)
|
||||||
@@ -1134,7 +1141,7 @@ def playwright_check_account_cookies(cookies):
|
|||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
page.goto(url)
|
page.goto(url)
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
check_account_status(page)
|
check_account_status(page, parse_cookies(cookies))
|
||||||
context.close()
|
context.close()
|
||||||
browser.close()
|
browser.close()
|
||||||
return {}
|
return {}
|
||||||
@@ -1146,8 +1153,7 @@ def playwright_login(username, password, code_2fa=None):
|
|||||||
with sync_playwright() as playwright:
|
with sync_playwright() as playwright:
|
||||||
update_windows_distinguish()
|
update_windows_distinguish()
|
||||||
browser = playwright.chromium.launch(
|
browser = playwright.chromium.launch(
|
||||||
headless=False, args=['--start-maximized'], executable_path=path,
|
headless=False, args=['--start-maximized'], executable_path=path
|
||||||
proxy={'server': '127.0.0.1:10889'}
|
|
||||||
)
|
)
|
||||||
context = browser.new_context(no_viewport=True, user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36')
|
context = browser.new_context(no_viewport=True, user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36')
|
||||||
context.add_init_script(path=os.path.join(BASE_PATH, 'stealth.min.js'))
|
context.add_init_script(path=os.path.join(BASE_PATH, 'stealth.min.js'))
|
||||||
@@ -1179,7 +1185,8 @@ def playwright_login(username, password, code_2fa=None):
|
|||||||
else:
|
else:
|
||||||
raise OperationFailed('验证码解析错误')
|
raise OperationFailed('验证码解析错误')
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
auth_span = page.query_selector('//span[text()="Try Another Way"]')
|
page.wait_for_load_state()
|
||||||
|
auth_span = page.query_selector('//span[text()="Try Another Way" or text()="Try another way"]')
|
||||||
if auth_span:
|
if auth_span:
|
||||||
if not code_2fa:
|
if not code_2fa:
|
||||||
raise OperationFailed('缺少2FA密钥')
|
raise OperationFailed('缺少2FA密钥')
|
||||||
@@ -1207,7 +1214,6 @@ def playwright_login(username, password, code_2fa=None):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# cookies = 'sb=mC6pxQuLvNLPTNpF-b9Tk8tK;c_user=61570961343759;xs=18:fBZ4XJkFA69uNg:2:1734940655:-1:-1;fr=0JjwzD0HEedbQSHGt.AWUHNQcfxnkbZ3j5rVd1NgTTGhA.BnaRfv..AAA.0.0.BnaRfv.AWWF3uukqmQ;datr=7xdpZzxiItbht8A5aCDBAhQU'
|
# cookies = 'sb=mC6pxQuLvNLPTNpF-b9Tk8tK;c_user=61570961343759;xs=18:fBZ4XJkFA69uNg:2:1734940655:-1:-1;fr=0JjwzD0HEedbQSHGt.AWUHNQcfxnkbZ3j5rVd1NgTTGhA.BnaRfv..AAA.0.0.BnaRfv.AWWF3uukqmQ;datr=7xdpZzxiItbht8A5aCDBAhQU'
|
||||||
# cookies = 'datr=q13hZowje6bbViFxECQpYyp8; sb=q13hZgJARsRIDmNJG8xUauAe; m_pixel_ratio=1.875; wd=384x686; c_user=61565823476070; fr=01C6Lt4VArm5hELvx.AWXg75HOo-QNJgbiDl8qFtw_5lc.Bm4V2r..AAA.0.0.Bm4V25.AWWHzUeMTuI; xs=50%3A8luhgQ-Ea0vnhg%3A2%3A1726045627%3A-1%3A-1'
|
|
||||||
# cookies = {
|
# cookies = {
|
||||||
# 'datr': '4MXgZ3twsUMLaR7_yYPjboTs',
|
# 'datr': '4MXgZ3twsUMLaR7_yYPjboTs',
|
||||||
# 'sb': '4MXgZ5AKdd6AiVqGy_N0-cpe',
|
# 'sb': '4MXgZ5AKdd6AiVqGy_N0-cpe',
|
||||||
@@ -1242,8 +1248,9 @@ if __name__ == '__main__':
|
|||||||
# # lastname='Keals',
|
# # lastname='Keals',
|
||||||
# # image_key='rg.jpg'
|
# # image_key='rg.jpg'
|
||||||
# )
|
# )
|
||||||
# playwright_check_account_cookies(cookies)
|
cookies = '{"datr": "kgAKaCUX5_TBUoWScwULOUy1", "sb": "kgAKaHuXanVysgh_ZMUr71bV", "wd": "1920x945", "locale": "en_US", "c_user": "61575057767684", "fr": "0CUBUr4ylkIHja0Mx.AWfMivYkYl7BU22lwt8EAI7pzeF59lvJhmEOseS0dxnxlP8SPg4.BoCgCS..AAA.0.0.BoCgCh.AWcb0fzRzetlWo5Jg5bYyhKUbWA", "xs": "12%3AXMKnbFIc1Is6NA%3A2%3A1745485987%3A-1%3A13612", "presence": "C%7B%22t3%22%3A%5B%5D%2C%22utc3%22%3A1745485990508%2C%22v%22%3A1%7D"}'
|
||||||
# cookies = playwright_login('61575067907301', '@Badhon@20', 'D54WZQP7VCNDKAKC66Q3WNQYTOFJSAZY')
|
playwright_check_account_cookies(cookies)
|
||||||
|
# cookies = playwright_login('61575057767684', '@Badhon@20', 'AMULNV6YOAMDGOQ72NNBQCBMTOFB4BTJ')
|
||||||
# print(cookies)
|
# print(cookies)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user